中(zhōng)文编辑排版专家(DreamEdit)是readbook的(de)一个免费组件,但(dàn)也(yě)有注册码,注册后就不会出现未注(zhù)册的字(zì)样。之(zhī)所之要破解,主要(yào)是学习手动脱(tuō)壳和巩(gǒng)固爆破。
1、拥有强(qiáng)大的文本排版功能。它可以按照用户自己(jǐ)设定(dìng)的(de)“段尾标记字符”或者空行对(duì)文本分段,并排版(bǎn)为(wéi)固定宽(kuān)度(dù)的文(wén)本(běn),同时可(kě)以设定避头尾字符。可(kě)以选择排版时段间是否空(kōng)行、是否进行全(quán)角—〉半角的转换、是(shì)否进行字符(fú)串替换、是否纠正单引号和双引号的匹配(pèi)、每行行(háng)首是否空固定格(gé)数(shù)、第一行是(shì)否(fǒu)居中等等。可以对全(quán)文(wén)排版,也可以对选择的几行或者几段(duàn)进行(háng)单(dān)独排版。支持同时对所有打开的文件(jiàn)进行排版。同时,它还可以进行大小写、全半(bàn)角(jiǎo)转换,以及GB码和Big5码(mǎ)的转换。
2、对于排版后的文本可以按照(zhào)用户(hù)给定的模板进行导(dǎo)出(chū),用正文(wén)替(tì)换模板中的(de)[TEXT]。如果你有大(dà)量(liàng)格式相(xiàng)同只有(yǒu)正文不同的文件需要处(chù)理(lǐ),这个(gè)功能恰到(dào)好处(chù)。
3、支持插件(PlugIn)。可以开发自己(jǐ)的插件,对(duì)文本(běn)进行特(tè)殊处理。比如我(wǒ)的插件可以通(tōng)过WWW 方式(shì)把文本发到BBS 上。可(kě)以进行Base64解(jiě)码(mǎ)。可(kě)以进行英(yīng)文拼写检查。甚至可以根据空(kōng)格或者制表(biǎo)符,对所选择(zé)的文本进行(háng)行列转换。如果你想自己控制打印的话(huà),那就开发一个专门用于打印的(de)插件。
4、可(kě)以远程处理(lǐ)信件,简单的收发(fā)信件(jiàn)。可以(yǐ)批量的(de)通过(guò)Email 向支持Email Post 的BBS发文章。
1、首先(xiān)用(yòng)fi2.49侦(zhēn)测,知道是用Aspack 2.001加了壳(ké),通过各种脱壳(ké)软件都可(kě)以很快搞(gǎo)定。手动脱壳(ké)出不难,用TRW2000载入DreamEdit 2.3.1,后(hòu)通过F10步进,F8跟入关键CALL,F7跳开循环(huán),就可(kě)以找到关键的领空(kōng)跳转,再(zài)用PEDUMP,就生成了一个可执行的脱壳文件(用makepe生(shēng)成的文件,运行时会出错(cuò))。
2、用(yòng)w32Dasm黄金中文版(bǎn)静态反汇编,再用(yòng)“串(chuàn)式数据参考”,找(zhǎo)"中文编辑排(pái)版专家—DreamEdit(未注册)",来到下面这个段。
: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)键对比
:0054C3D7 740E je 0054C3E7 <======跳则,显示“未注册”,所以把740E改(gǎi)为750E可爆破(pò)
* Possible StringData Ref from Code Obj ->"中文编辑(jí)排版(bǎn)专家—DreamEdit"
|
:0054C3D9 BA50C65400 mov edx, 0054C650
:0054C3DE 8BC3 mov eax, ebx
:0054C3E0 E8C3CEEEFF call 004392A8
:0054C3E5 EB0C jmp 0054C3F3 <=======跳转到程序正式运行部分。
* 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 <=======程序正(zhèng)式运行部分
:0054C3FA 8D55F8 lea edx, dword ptr [ebp-08]
:0054C3FD A120025900 mov eax, dword ptr [00590220]
:0054C402 8B00 mov eax, dword ptr [eax]
3、上面解决了(le)“未注册(cè)显示部(bù)分”,下面再来看看序列号(hào)注册(cè)部分,还是用“串式数据参考”,找到"注册成(chéng)功!感谢您对DreamEdit的支持!",太经典的句(jù)子(zǐ)呀,来到(dào)下(xià)面这(zhè)个段代(dài)码:
* 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)键对比
:005485D0 0F84B4000000 je 0054868A <========关键跳转(zhuǎn),过去就变(biàn)成(chéng)“错误注册号了”,就改(gǎi)这里了
: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 <=========关键对比
:00548601 0F8E83000000 jle 0054868A <=========第二个关(guān)键跳转,过去就(jiù)变成“错误注册(cè)号了”,改这里
: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 ->"注(zhù)册成功"
|
:00548659 68FC865400 push 005486FC
* Possible StringData Ref from Code Obj ->"注册成功!感谢您(nín)对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 ->"中文编辑排版专家—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 ->"错误"
|
:0054868C 6850875400 push 00548750
* Possible StringData Ref from Code Obj ->"用(yòng)户名或注册(cè)码错误(请(qǐng)注意(yì)区分大小写)!"
|
: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 <======程序正(zhèng)式部分(fèn)
: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、到这(zhè)里(lǐ),程序(xù)算是爆破完成,但与算注册号(hào)的方法(fǎ)还是有差距(jù),因为(wéi)程序每次启动(dòng),都会在DreamEdit.ini文件里读取用户名(míng)和(hé)注册号,进行运(yùn)算,不对就(jiù)会(huì)显示“未注(zhù)册”,当然(rán)我爆破了(在上面),也(yě)不会显示。
