" />
中文編輯排版專(zhuān)家(DreamEdit)是readbook的一個(gè)免費(fèi)組件,但也有注冊(cè)碼,注冊(cè)后就不會(huì)出現(xiàn)未注冊(cè)的字樣。之所之要破解,主要是學(xué)習(xí)手動(dòng)脫殼和鞏固爆破。
1、擁有強(qiáng)大的文本排版功能。它可以按照用戶(hù)自己設(shè)定的“段尾標(biāo)記字符”或者空行對(duì)文本分段,并排版為固定寬度的文本,同時(shí)可以設(shè)定避頭尾字符?梢赃x擇排版時(shí)段間是否空行、是否進(jìn)行全角—〉半角的轉(zhuǎn)換、是否進(jìn)行字符串替換、是否糾正單引號(hào)和雙引號(hào)的匹配、每行行首是否空固定格數(shù)、第一行是否居中等等。可以對(duì)全文排版,也可以對(duì)選擇的幾行或者幾段進(jìn)行單獨(dú)排版。支持同時(shí)對(duì)所有打開(kāi)的文件進(jìn)行排版。同時(shí),它還可以進(jìn)行大小寫(xiě)、全半角轉(zhuǎn)換,以及GB碼和Big5碼的轉(zhuǎn)換。
2、對(duì)于排版后的文本可以按照用戶(hù)給定的模板進(jìn)行導(dǎo)出,用正文替換模板中的[TEXT]。如果你有大量格式相同只有正文不同的文件需要處理,這個(gè)功能恰到好處。
3、支持插件(PlugIn)。可以開(kāi)發(fā)自己的插件,對(duì)文本進(jìn)行特殊處理。比如我的插件可以通過(guò)WWW 方式把文本發(fā)到BBS 上?梢赃M(jìn)行Base64解碼?梢赃M(jìn)行英文拼寫(xiě)檢查。甚至可以根據(jù)空格或者制表符,對(duì)所選擇的文本進(jìn)行行列轉(zhuǎn)換。如果你想自己控制打印的話(huà),那就開(kāi)發(fā)一個(gè)專(zhuān)門(mén)用于打印的插件。
4、可以遠(yuǎn)程處理信件,簡(jiǎn)單的收發(fā)信件?梢耘康耐ㄟ^(guò)Email 向支持Email Post 的BBS發(fā)文章。
1、首先用fi2.49偵測(cè),知道是用Aspack 2.001加了殼,通過(guò)各種脫殼軟件都可以很快搞定。手動(dòng)脫殼出不難,用TRW2000載入DreamEdit 2.3.1,后通過(guò)F10步進(jìn),F(xiàn)8跟入關(guān)鍵CALL,F(xiàn)7跳開(kāi)循環(huán),就可以找到關(guān)鍵的領(lǐng)空跳轉(zhuǎn),再用PEDUMP,就生成了一個(gè)可執(zhí)行的脫殼文件(用makepe生成的文件,運(yùn)行時(shí)會(huì)出錯(cuò))。
2、用w32Dasm黃金中文版靜態(tài)反匯編,再用“串式數(shù)據(jù)參考”,找"中文編輯排版專(zhuān)家—DreamEdit(未注冊(cè))",來(lái)到下面這個(gè)段。
:0054C3C0 683AC65400 push 0054C63A
:0054C3C5 64FF30 push dword ptr fs:[eax]
:0054C3C8 648920 mov dword ptr fs:[eax], esp
:0054C3CB E8FC67EBFF call 00402BCC
:0054C3D0 E8CF09FAFF call 004ECDA4
:0054C3D5 84C0 test al, al <======關(guān)鍵對(duì)比
:0054C3D7 740E je 0054C3E7 <======跳則,顯示“未注冊(cè)”,所以把740E改為750E可爆破
* Possible StringData Ref from Code Obj ->"中文編輯排版專(zhuān)家—DreamEdit"
|
:0054C3D9 BA50C65400 mov edx, 0054C650
:0054C3DE 8BC3 mov eax, ebx
:0054C3E0 E8C3CEEEFF call 004392A8
:0054C3E5 EB0C jmp 0054C3F3 <=======跳轉(zhuǎn)到程序正式運(yùn)行部分。
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0054C3D7(C)
|
* Possible StringData Ref from Code Obj ->"中文編輯排版專(zhuān)家—DreamEdit(未注冊(cè))"
|
:0054C3E7 BA74C65400 mov edx, 0054C674
:0054C3EC 8BC3 mov eax, ebx
:0054C3EE E8B5CEEEFF call 004392A8
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0054C3E5(U)
|
:0054C3F3 C6830808000000 mov byte ptr [ebx+00000808], 00 <=======程序正式運(yùn)行部分
:0054C3FA 8D55F8 lea edx, dword ptr [ebp-08]
:0054C3FD A120025900 mov eax, dword ptr [00590220]
:0054C402 8B00 mov eax, dword ptr [eax]
3、上面解決了“未注冊(cè)顯示部分”,下面再來(lái)看看序列號(hào)注冊(cè)部分,還是用“串式數(shù)據(jù)參考”,找到"注冊(cè)成功!感謝您對(duì)DreamEdit的支持!",太經(jīng)典的句子呀,來(lái)到下面這個(gè)段代碼:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00548536(C)
|
:005485AC 55 push ebp
:005485AD 68BE865400 push 005486BE
:005485B2 64FF30 push dword ptr fs:[eax]
:005485B5 648920 mov dword ptr fs:[eax], esp
:005485B8 8D55FC lea edx, dword ptr [ebp-04]
:005485BB 8B8300030000 mov eax, dword ptr [ebx+00000300]
:005485C1 E8B20CEFFF call 00439278
:005485C6 8B45FC mov eax, dword ptr [ebp-04]
:005485C9 E85247FAFF call 004ECD20
:005485CE 84C0 test al, al <========關(guān)鍵對(duì)比
:005485D0 0F84B4000000 je 0054868A <========關(guān)鍵跳轉(zhuǎn),過(guò)去就變成“錯(cuò)誤注冊(cè)號(hào)了”,就改這里了
:005485D6 8D55F8 lea edx, dword ptr [ebp-08]
:005485D9 8B8300030000 mov eax, dword ptr [ebx+00000300]
:005485DF E8940CEFFF call 00439278
:005485E4 8B45F8 mov eax, dword ptr [ebp-08]
:005485E7 50 push eax
:005485E8 8D55F4 lea edx, dword ptr [ebp-0C]
:005485EB 8B83F4020000 mov eax, dword ptr [ebx+000002F4]
:005485F1 E8820CEFFF call 00439278
:005485F6 8B45F4 mov eax, dword ptr [ebp-0C]
:005485F9 5A pop edx
:005485FA E8FDBEEBFF call 004044FC
:005485FF 85C0 test eax, eax <=========關(guān)鍵對(duì)比
:00548601 0F8E83000000 jle 0054868A <=========第二個(gè)關(guān)鍵跳轉(zhuǎn),過(guò)去就變成“錯(cuò)誤注冊(cè)號(hào)了”,改這里
:00548607 8D55F0 lea edx, dword ptr [ebp-10]
:0054860A 8B8300030000 mov eax, dword ptr [ebx+00000300]
:00548610 E8630CEFFF call 00439278
:00548615 8B45F0 mov eax, dword ptr [ebp-10]
:00548618 50 push eax
:00548619 A17C005900 mov eax, dword ptr [0059007C]
:0054861E 8B00 mov eax, dword ptr [eax]
* Possible StringData Ref from Code Obj ->"code"
|
:00548620 B9D4865400 mov ecx, 005486D4
* Possible StringData Ref from Code Obj ->"User"
|
:00548625 BAE4865400 mov edx, 005486E4
:0054862A 8B30 mov esi, dword ptr [eax]
:0054862C FF5604 call [esi+04]
:0054862F 8D55EC lea edx, dword ptr [ebp-14]
:00548632 8B83F4020000 mov eax, dword ptr [ebx+000002F4]
:00548638 E83B0CEFFF call 00439278
:0054863D 8B45EC mov eax, dword ptr [ebp-14]
:00548640 50 push eax
:00548641 A17C005900 mov eax, dword ptr [0059007C]
:00548646 8B00 mov eax, dword ptr [eax]
* Possible StringData Ref from Code Obj ->"Name"
|
:00548648 B9F4865400 mov ecx, 005486F4
* Possible StringData Ref from Code Obj ->"User"
|
:0054864D BAE4865400 mov edx, 005486E4
:00548652 8B30 mov esi, dword ptr [eax]
:00548654 FF5604 call [esi+04]
:00548657 6A40 push 00000040
* Possible StringData Ref from Code Obj ->"注冊(cè)成功"
|
:00548659 68FC865400 push 005486FC
* Possible StringData Ref from Code Obj ->"注冊(cè)成功!感謝您對(duì)DreamEdit的支持!"
|
:0054865E 6808875400 push 00548708
:00548663 8BC3 mov eax, ebx
:00548665 E8326EEFFF call 0043F49C
:0054866A 50 push eax
:0054866B E8B401ECFF call 00408824
:00548670 A1A0005900 mov eax, dword ptr [005900A0]
:00548675 8B00 mov eax, dword ptr [eax]
* Possible StringData Ref from Code Obj ->"中文編輯排版專(zhuān)家—DreamEdit"
|
:00548677 BA34875400 mov edx, 00548734
:0054867C E8270CEFFF call 004392A8
:00548681 8BC3 mov eax, ebx
:00548683 E864D0F0FF call 004556EC
:00548688 EB19 jmp 005486A3 <=====跳入程序正式部分
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:005485D0(C), :00548601(C)
|
:0054868A 6A10 push 00000010
* Possible StringData Ref from Code Obj ->"錯(cuò)誤"
|
:0054868C 6850875400 push 00548750
* Possible StringData Ref from Code Obj ->"用戶(hù)名或注冊(cè)碼錯(cuò)誤(請(qǐng)注意區(qū)分大小寫(xiě))!"
|
:00548691 6858875400 push 00548758
:00548696 8BC3 mov eax, ebx
:00548698 E8FF6DEFFF call 0043F49C
:0054869D 50 push eax
:0054869E E88101ECFF call 00408824
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00548688(U)
|
:005486A3 33C0 xor eax, eax <======程序正式部分
:005486A5 5A pop edx
:005486A6 59 pop ecx
:005486A7 59 pop ecx
:005486A8 648910 mov dword ptr fs:[eax], edx
:005486AB 68C5865400 push 005486C5
4、到這里,程序算是爆破完成,但與算注冊(cè)號(hào)的方法還是有差距,因?yàn)槌绦蛎看螁?dòng),都會(huì)在DreamEdit.ini文件里讀取用戶(hù)名和注冊(cè)號(hào),進(jìn)行運(yùn)算,不對(duì)就會(huì)顯示“未注冊(cè)”,當(dāng)然我爆破了(在上面),也不會(huì)顯示。