破解实例

设有某一须注册软件......

1.Username: 填入 YanHuaQi (因为要6个字母以上) Company: CSMC 注册码: 87654321 (先乱填)

2.Ctrl-D 切入S-ICE...

3.bpx hmemcpy

4.按F5切回Teleport Pro...然後按下OK键...

5.S-ICE拦下後...BD * 把拦中断的功能关掉 按几次F12...跳回Teleport Pro领空...

6.然後一直按F10....直到下面:

7.XXX:0040E3C6 JZ 0040E48B XXX:0040E3CC LEA EDI,[ESI+000000D5] XXX:0040E3D2 MOV EAX,[EDI] XXX:0040E3D4 PUSH EAX XXX:0040E3D5 CALL 0041BAD0 ^^^^^^^^^^^^^ 这是算注册码的CALL

XXX:0040E3DA ADD ESP,04 XXX:0040E3DD CMP EAX,EBP ^^^^^^^^^^^ 要害 !!! 比较核心...

XXX:0040E3DF JNZ 0040E497 ^^^^^^^^^^^^ 若EAX和EBP不相同...就跳到0040E497...那就GAME OVER啦...

所以执行到XXX:40E3DD那行时...看一下EAX和EBP...

嘿嘿...

EBP:05397FB1....好眼熟ㄚ...呵呵...就是87654321的16进位值...

EAX:50CCD6BA....当然就是注册码罗...换算成10进位...

答案就是: 1355601594

再次整理一遍:

username: YanHuaQi company: CSMC password: 1355601594

=============================================================================== yhq 破解实战录 02 --- OM21_EN.ZIP 破解法 !!!

以下将此软体简称OM...

1.Username: 填入 yhq 注册码: 87654321 (先乱填)

2.Ctrl-D 切入S-ICE...

3.bpx hmemcpy

4.按F5切回OM...然後按下OK键...

5.S-ICE拦下後...BD * 把拦中断的功能关掉

按几次F12...跳回OM领空...

6.然後一直按F10....直到下面:

7.XXX:0040D860 LEA EBX,[EDI+64] XXX:0040D863 LEA ESI,[EDI+68] XXX:0040D866 PUSH EBX XXX:0040D867 MOV ECX,EDI XXX:0040D869 CALL 0040D480 ^^^^^^^^^^^^^ 这是算注册码的CALL

XXX:0040D86E CMP EAX,[ESI] ^^^^^^^^^^^^^ 要害 !!! 比较核心...

XXX:0040D870 JZ 0040D884 ^^^^^^^^^^^ 若EAX和[ESI]相同...就跳到0040D884...那就注册成功啦...

所以执行到XXX:0040D86E那行时...看一下EAX和[ESI]...

嘿嘿...

下d esi指令

XXX:0066F1F4 B1 7F 39 05

反过来看: 05397FB1

好眼熟ㄚ...呵呵...就是87654321的16进位值...

而EAX:0032F06....当然就是注册码罗...换算成10进位...

答案就是: 208646

再次整理一遍:

username: yhq password: 208646

=============================================================================== yhq 破解实战录 03 --- Netterm 4.10 破解法 !!!

1.Username: 填入 yhq 注册码: 87654321 (先乱填)

2.Ctrl-D 切入S-ICE...

3.bpx hmemcpy

4.按F5切回Netterm...然後按下OK键...

5.S-ICE拦下後...BD * 把拦中断的功能关掉 按几次F12...跳回Netterm领空...

6.然後一直按F10....直到下面:

7.XXX:00423E4A LEA EAX,[EBP+FFFFFDBC] XXX:00423E50 PUSH EAX XXX:00423E51 MOV EAX,[0044814C] XXX:00423E56 PUSH EAX XXX:00423E57 CALL 00441826 ^^^^^^^^^^^^^ 此CALL会将我们带到ISIVIDEO.DLL...

就是Netterm的运算注册码和比对的核心...

XXX:00423E5C MOV [EBP+FFFFFDB8],EAX XXX:00423E62 CMP DWORD PTR [EBP+FFFFFDB8],00 XXX:00423E69 JZ 00423EC3 ^^^^^^^^^^^ 跳到00423EC3...就GAME OVER...

弟破过好几套软体...

都是使用EAX当作一锅旗标值...

也就是最後以EAX的值来决定注册成功或失败...

所以由上段程式可以知道:

当EAX=0时...注册失败...

当EAX=1时...注册成功...(为啥知道是1勒...因为我trace过嘛...)

所以我们就追入XXX:00423E57那个CALL(核心)看看...

8.追入後...一直按F10...直到如下:

(这里已是ISIVIDEO.DLL的领空...而不是NETTERM.EXE的喔)

而且此处亦是比对核心最後的返回地方...

XXX:004748B1 JNZ 004748C6 XXX:004748B7 MOV EAX,00000001 XXX:004748BC JMP 004748CD XXX:004748C1 JMP 004748CD XXX:004748C6 XOR EAX,EAX ^^^^^^^^^^^ 就是这里将EAX的值改成0...使我们注册失败..

所以执行到这一行时看看EAX为多少...嗯...就是前面说的1嘛...

所以将此行改成 NOP NOP

或是MOV AL,1

就破解啦...

别忘了先下code on指令...将机械码计起来...

待会要改ISIVIDEO.DLL...

XXX:004748C8 JMP 004748CD XXX:004748CD POP EDI XXX:004748CE POP ESI XXX:004748CF POP EBX XXX:004748D0 LEAVE XXX:004748D1 RET 0010

再次整理一遍:

改ISIVIDEO.DLL

FIND: E9 0C 00 00 00 E9 07 00 00 00 33 C0 E9 00 00 00 00 5F 5E 5B EDIT: -- -- -- -- -- -- -- -- -- -- 90 90 -- -- -- -- -- -- -- --

--:表不用修改之处...

改完後...

username: 随你高兴...想填啥就填啥 password: 随你高兴...想填啥就填啥

=============================================================================== yhq 破解实战录 04 --- Master Converter v1.73 破解法 !!!

这是一套各种单位换算的软体... 以下称此软体为MC...呵呵...别乱想喔...

1.注册码: 1234567890123 (此处先乱填...但必须填满13个字... 为啥我知道13个字...因为我有先填过87654321八个字 去trace...结果程式会先看看注册码是否为13个字... 是的话才会去比较)

2.Ctrl-D 切入S-ICE...

3.下bpx hmemcpy指令...

4.按F5切回MC...然後按下OK键...

5.S-ICE拦下後...BD * 把拦中断的功能关掉

按几次F12...跳回MC领空...

6.然後一直按F10....直到下面:

XXX:00444CBB MOV EAX,[004509C4] XXX:00444CC0 CALL 004414FC ^^^^^^^^^^^^^ 算注册码及比对核心的CALL...

XXX:00444CC5 MOV [004509C0],AL XXX:00444CCA CMP BYTE PTR [004509C0],00

由AL当旗标值...来决定注册成功与否...

XXX:00444CD1 JZ 00444CF1 ^^^^^^^^^^^ XXX:00444CD3 PUSH 40

跳到00444CF1就GAME OVER啦...

追到XXX:00444CD1时...

若将IP值改成00444CD3...即让JZ 00444CF1失效...

会出现注册成功的讯息...

所以推断要害必在XXX:00444CC0那锅CALL...

所以在那行设断...重新注册一次...并追进去...

7.追入後...一直按F10...直到如下:

XXX:00403423 MOV EBX,EAX

XXX:00403425 MOV ESI,EDX ^^^^^^^^^^^ XXX:00403427 MOV EDI,ECX ^^^^^^^^^^^ 追到上面那两行先停一下...

看看ESI和EDI各指向哪些资料...

下d esi指令 d edi指令

嘿嘿...真幸运...

可看到ESI指向1234567890123...刚刚输入的注册码...

嘿嘿...爽...事情成功了一半...

接著下bpm XXXX:YYYYYYYY (那锅ESI指向的位址)...

XXX:00403429 MOV EAX,EDI XXX:0040342B CALL 004033FC

8.接著就看神对我们有没有关爱的眼神啦...

呵呵...果然神爱世人...:P

一直下 G 指令(不要按太快)...直到下面:

XXX:004035ED MOV ECX,[ESI];将真正的注册码由ESI指向处放到ECX XXX:004035EF MOV EBX,[EDI];将输入的注册码由ESI指向处放到EBX XXX:004035F1 CMP ECX,EBX ;比对核心...哈哈哈...Bingo !!! XXX:004035F3 JNZ 0040364D ;不相同则跳跃到0040364D XXX:004035F5 DEC EDX

执行到XXX:004035F1那行时...

下d esi指令...可看到真正的注册码...123740*707773

下d edi指令...可看到输入的注册码...1234567890123

当然也可将XXX:004035F3 JNZ 0040364D 这锅指令改成NOP...

不过注册码已找出...就不用费事啦...

9.再次整理一遍:

Master Converter v1.73

注册码: 123740*707773

=============================================================================== yhq 破解实战录 05 --- Video Clip MPEG 1.7 破解法 !!!

以下称此软体为VCM...

1.由於此软体没有输入注册码的地方...故猜想可能是key-file的保护...

2.Ctrl-D 切入S-ICE...

3.下bpx getprivateprofileint指令...

4.按F5切回Win95...然後执行VCM...

5.S-ICE拦下後...BD * 把拦中断的功能关掉

按几次F12...跳回VCM领空...

6.然後一直按F10....直到下面:

XXX:2C2C MOV AX,08E5 XXX:2C2F PUSH AX XXX:2C30 PUSH 0030FFFF XXX:2C26 CALL 0C57:A8FE ^^^^^^^^^^^^^^ 执行到此CALL...就GAME OVER啦...

所以往上看...看哪里可以避开此CALL...

哇勒...好几处勒...而且都一样...

想必是检查好几次...故找最前面的那锅...如下:

7.

XXX:2BEB PUSH EAX XXX:2BED CALL 0CA7:D618 ;此CALL为比较核心段... 主程式呼叫这锅CALL好几次.. XXX:2BF2 OR AX,AX ;以AX当旗标值...嘿嘿...很眼熟吧... XXX:2BF4 JNZ 2C3B ;当AX不为0时就跳到2C3B... 就避开2C26那锅CALL啦...

8.所以再2BED那行设断...再重新执行一次... 拦下後...追进去...直到如下:

XXX:D61C MOV BX,[BP+0A] XXX:D61F LES SI,[BP+06] XXX:D622 MOV AX,ES:[SI] XXX:D625 AND AX,BX XXX:D627 CMP AX,BX ;嘿嘿...比较核心罗... XXX:D629 JNZ D634 ;比较结果若不同...就跳到D634 XXX:D62B MOV AX,0001 ;我们的目的...使AX不为0 !!! XXX:D62E POP SI XXX:D62F LEAVE XXX:D630 RETF 0006 XXX:D633 NOP XXX:D634 XOR AX,AX ;嘿嘿...程式要我们死翘翘的地方... XXX:D636 POP SI XXX:D637 LEAVE XXX:D638 RETF 0006

所以勒...就把 XXX:D629 JNZ D634 这行改成两锅 NOP 就破啦...

别忘了先下 code on 的指令将机械码记起来喔...待会要改原程式...

9.再次整理一遍:

Video Clip MPEG 1.7

改 VCLPMPG.EXE

FIND: C4 76 06 26 8B 04 23 C3 3B C3 75 09 B8 01 00 5E C9 EDIT: -- -- -- -- -- -- -- -- -- -- 90 90 -- -- -- -- --

--: 表不用修改之处...

=============================================================================== yhq 破解实战录 06 --- WinTex95 v2.01 破解法 !!!

以下称此软体为WT...

1.输入name: yhq code: 87654321 (先乱写)

2.Ctrl-D 切入S-ICE...

3.下bpx hmemcpy指令...

4.按F5切回WT...按OK...

5.S-ICE拦下後...BD * 把拦中断的功能关掉

按几次F12...跳回WT领空...

6.然後一直按F10....直到下面:

XXXX:0044D3F4 MOV EAX,[EBP-08] XXXX:0044D3F7 MOV CX,[0044D628] XXXX:0044D3FE MOV DL,1 XXXX:0044D400 CALL 00431810 ;执行到此CALL...就GAME OVER啦... XXXX:0044D405 JMP 0044D4F6

所以往上看...看哪里可以避开此CALL...

如下:

7.

XXXX:0044D33C CALL 0040373C ;要害CALL !!! XXXX:0044D341 JZ 0044D40A ;跳跃点

8.所以在0044D33C那行设断...再重新执行一次... 拦下後...追进去...直到如下:

XXXX:0040373F MOV ESI,EAX XXXX:00403741 MOV EDI,EDX XXXX:00403743 CMP EAX,EDX ;嘿嘿...比较核心罗... XXXX:00403745 JZ 004037DA ;若相同则跳到004037DA

所以勒...执行到XXXX:00403743 CMP EAX,EDX时...

下 d esi 指令...看到真正的注册码: 4694 d edi 指令...看到输入的注册码: 87654321

9.嗯...注册码算出来啦...重新BD *...按F5...跳回WT重新注册一次... 哈哈哈...成功啦吗???...别高兴的太早... 关掉WT...重新执行WT...哇勒!@#$%...还是有延迟画面... 而且看萤幕最上面还有 UNREGISERED !!! 这个死德国佬...还布有暗桩...!@#$%.....

10.关掉WT...用 S-ICE 的 Loader...载入Wtex95.exe... 先按F8一次...再一直按F10...直到如下...

XXXX:0046BD0D MOV EBX,EAX XXXX:0046BD0F MOV EAX,EDI XXXX:0046BD11 CALL 00402C10 ;这锅CALL就是延迟画面啦...

所以往上看...看哪里可以避开此CALL...

如下:

11.

XXXX:0046BCE3 MOV EBX,00000001 XXXX:0046BCE8 MOV EAX,[0046E6B4] XXXX:0046BCED CMP BYTE PTR [EAX+000001D0],00 嘿嘿...[EAX+000001D0]就是旗标值罗... XXXX:0046BCF4 JNZ 0046BD16 ;若不相同就跳过延迟画面...

12.所以我们先 BD * 在下 BPM XXXX:YYYYYYYY (就是EAX+000001D0那锅位址)... 看看程式是哪里在改这锅旗标值... 按F5...关掉WT...重新执行WT... 拦下後...多按几次 G...直到如下...

13.

XXXX:0044D77D MOV EBX,EAX XXXX:0044D77F MOV BYTE PTR [EBX+000001D0],00 ;嘿嘿...抓到罗... XXXX:0044D786 MOV EAX,EBX ;暗桩一... XXXX:0044D788 CALL 0044D1A4 ;暗桩二... XXXX:0044D78D CMP BYTE PTR [EBX+000001D0],00 ;返回前最後比对处... XXXX:0044D794 JZ 0044D7A0 ;若是0...就跳到失败的地方罗...

先别急著改XXXX:0044D77F MOV BYTE PTR [EBX+000001D0],00... 因为程式後面还有暗桩...还会将[EBX+000001D0]这锅位址填0... 所以到0044D78D CMP BYTE PTR [EBX+000001D0],00这行才改... 下 CODE ON 指令...此指令共 7 BYTES... 所以可以改成MOV BYTE PTR [EBX+000001D0],01... 而0044D794 JZ 0044D7A0...改成两锅 NOP...

哈哈哈...

这一次真的破啦...死德国佬...

14.重新整理一次:

改 Wtex95.exe

FIND: 80 BB D0 01 00 00 00 74 0A EDIT: C6 83 D0 01 00 00 01 90 90

name: yhq code: 4694

=============================================================================== yhq 破解实战录 07 --- PrimaSoft AutoFTP v1.0 破解法 !!!

以下称此软体为AF...(不是GF啦...我快想疯罗!!!)

1.输入name: yhq code: 87654321 (先乱写)

2.Ctrl-D 切入S-ICE...

3.下bpx hmemcpy指令...

4.按F5切回AF...按OK...

5.S-ICE拦下後...BD * 把拦中断的功能关掉

按几次F12...跳回AF领空...

6.然後一直按F10....直到下面:

XXXX:0045F87E MOV EAX,[EBP-08] XXXX:0045F881 POP EDX XXXX:0045F882 CALL 0045C6A8 ;要害CALL!!! XXXX:0045F887 TEST AL,AL ;嘿嘿...眼熟吧!!! XXXX:0045F889 JZ 0045F8C0 ;跳到0045F8C0就GAME OVER啦!!! XXXX:0045F88B MOV BYTE PTR [EBX+000001C4],01

你要是跳到0045F8C0...要按F10一阵子才会看到失败窗... 我为啥知道这锅跳跃点是关键... 其实你要是跳到0045F8C0...接下来会有一堆RET(返回)指令... 所以大概猜想离"死期"不远罗... 而且这锅跳跃离XXXX:0045F889的下一锅指令 XXXX:0045F88B MOV BYTE PTR [EBX+000001C4],01有一点距离... 所以大胆判断...这是关键跳跃点... 所以在 XXXX:0045F882 CALL 0045C6A8 设断...重新TRACE一次...

7.进入XXXX:0045F882 CALL 0045C6A8那锅CALL後...一直按F8... 期间你会看到程式运算注册码的过程... 在这因为弟没时间KEY-IN...故略过... 仅列出比对核心要害处... 一直按F8...直到如下:

XXXX:0040396B MOV ESI,EAX XXXX:0040396D MOV EDI,EDX XXXX:0040396F CMP EAX,EDX ;命中要害!!!比对核心罗!!! XXXX:00403971 JZ 00403A06 ;若相同则跳到00403A06

执行到XXXX:0040396F CMP EAX,EDX

下 D EDI 指令: 看到输入的注册码 87654321 下 D ESI 指令: 看到真正的注册码 987654820-968

8.再次整理一遍:

软体名: PrimaSoft AutoFTP v1.0 姓 名: yhq 注册码: 987654820-968

=============================================================================== yhq 破解实战录 08 --- HyperSnap-DX v3.00 破解法 !!!

以下称此软体为HS...

1.执行HS...出现延迟画面...

2.Ctrl-D 切入S-ICE...

3.下bpx lockmytask指令...

4.按F5切回HS...按OK...

5.S-ICE拦下後...BD * 把拦中断的功能关掉

按几次F12...跳回HS领空(HSDX主程式模组)...

6.然後一直按F10....直到下面:

XXXX:0040F6FE PUSH 0046CC44 XXXX:0040F703 PUSH ECX XXXX:0040F704 PUSH EAX XXXX:0040F705 CALL [00490D54] ;用F10带过此行... XXXX:0040F70B TEST EDI,EDI 延迟画面就跑出来啦... XXXX:0040F70D JZ 0040F745

所以往上看...看哪里可以避开此CALL...

如下:

7.

XXXX:0040F685 CALL 00426C10 XXXX:0040F68A CMP DWORD PTR [0048547C],00 ;比对旗标值 XXXX:0040F691 PUSH EBX XXXX:0040F692 PUSH ESI XXXX:0040F693 PUSH EDI XXXX:0040F694 JNZ 0040F745 ;若[0048547C]之值等於00... 那就死定罗!!!

8.所以在0040F685那行设断...再重新执行一次... 拦下後...追进去...

但是...发觉...好像没有更动[0048547C]的指令出现... 不信邪... 下BPM XXXX:YYYYYYYY (即[0048547C]的位址)... 按下G...结果还是在XXXX:0040F691 PUSH EBX拦下... 表示此行的上一行XXXX:0040F68A CMP DWORD PTR [0048547C],00 有读写此位址...当然嘛...要比较...当然要去读咩... 除此之外就没读写那锅位址的指令... 我偏不信邪...BPM XXXX:YYYYYYYY仍然开著... 重新载入执行...哇勒...还是在老地方拦下... 但是重头载入执行...你会发觉 XXXX:0040F68A CMP DWORD PTR [0048547C],00被栏两次(检查两次) 可见没有其他的指令读写那锅位址... 算了...那就不管啦...

执行到XXXX:0040F694 JNZ 0040F745 下CODE ON...记下机械码... 然後下A... 改成JMP 0040F745 嗯...强迫跳过啦...:p

9.这一套破的蛮丑的... 还有Unregistered version的标记... 不管啦...用UltraEdit改掉就好啦... 刚试了一下(2000年)...功能都没问题... 应该ok啦...收工!!!

10.重新整理一次:

软体名: HyperSnap-DX v3.00

改 HSDX.EXE

FIND: 83 3D 7C 54 48 00 00 75 2A 8D 45 0C 50 EDIT: -- -- -- -- -- -- -- EB -- -- -- -- --

--: 表不用修改之处。

=============================================================================== yhq 破解实战录 09 --- 汉X通 v3.0 破解法 !!!

以下称此软体为XXX...

1.执行XXX...并且到输入序号的画面...输入87654321(乱填)

此套软体是依据注册码(Registered No,)(每套应该不同) and一些其他因素(ex:时间)来算出序号(Serial No.)... 因为我第二次trace时...序号又跟上次不同(若我没记错) 所以hacker版上的序号无效...

2.Ctrl-D 切入S-ICE...

3.下bpx hmemcpy指令...

4.按F5切回XXX...按OK...

5.S-ICE拦下後...BD * 把拦中断的功能关掉

按几次F12...跳回XXX领空(XXX主程式模组)...

6.然後一直按F10....直到下面:

XXXX:3A49 PUSH 5EDA XXXX:3A4C PUSH 00 XXXX:3A4E CALL USER!MESSAGEBOX ;这是WIN95中USER模组的API... 用来显示讯息的... 用F10带过此CALL... 错误讯息就跑出来啦...

所以往上看...看哪里可以避开此CALL...

如下:

7.

XXXX:39E5 REPNZ SCASB XXXX:39E7 NOT CX XXXX:39E9 SUB DI,CX XXXX:39EB REPZ CMPSB ;要害!!!比对核心... XXXX:39ED JZ 39F4 ;若相同则跳到39F4...即避开"死亡的界线"

所以在XXXX:39EB REPZ CMPSB设断...重新执行XXX... 拦下後... 下 D SI 会看到输入的注册码...87654321 下 D DI 会看到正确的注册码...XXXXXXXXX(每锅人不同)

=============================================================================== yhq 破解实战录 10 --- The Bologna Pony Express v2.25 破解法 !!!

以下称此软体为BPE...

1.先设定好BPE...上线...执行BPE...并且抓图抓至50个... 就会出现限制的视窗啦!!!

然後离线...省钱钱咩...

再试著抓一次(按BPE的Find Now键)...限制视窗就跑出来啦... 先按下ok...关掉限制视窗...

2.Ctrl-D 切入S-ICE...

3.下bpx postmessage指令... 我为啥知道这个限制视窗是用postmessage这个API来执行显示的... 因为我有试嘛...试很多开窗...显示讯息的API...才试出来的...

4.按F5切回BPE...按Find Now键...

5.S-ICE在此拦下:

USER!POSTMESSAGE XXXX:0001 MOV BX,SP XXXX:0003 CMP WORD PTR SS:[BX+0C],00

6.然後 BD * 把中断点先暂停... 一直按F12....跳回BPE领空(BPE主程式模组)... 此时...小心慢慢按F12...一直到跳出S-ICE并显示限制视窗为止... 按下OK键...又回到S-ICE... 可看到如下的程式码:

XXXX:0043424D CMP WORD PTR [0044D050],19 XXXX:00434255 JLE 0043426A ;若[0044D050]的资料小於等於19H 则跳到0043426A XXXX:00434257 CALL 00446A70 ;限制视窗...死翘翘的地方... XXXX:0043425C MOV WORD PTR [0044D030],FFFF ;S-ICE在此拦下... XXXX:00434265 JMP 0043482D XXXX:0043426A MOV EDX,[EBP+FFFFFF3C]

大胆推测一下...在XXXX:00434255 JLE 0043426A设断... 重新TRACE一次...拦下後...R IP...将IP改成0043426A... 嘿嘿...限制视窗不见了...而且程式处於连线状态... 嘿嘿...成功了吗???...还得真正连线试试看...

PS:其实这里的19H(等於10进位的25)... 你要是自己往下追...你就会知道...为啥啦... 25*2=50...自己追追看...:P

7.先用工具(EX:ULTRAEDIT)将XXXX:00434255 JLE 0043426A 的机械码改成JMP 0043426A... 然後连线抓图...嘿嘿...发生啥事... 只抓了一锅图就出现限制视窗... 所以还有暗桩...

先按OK...关掉限制视窗...CTRL-D 切回S-ICE... 一样用BPX POSTMESSAGE...抓图...拦下... 一直F12到BPE的领空...换一直F10... 你会回到XXXX:0043424D CMP WORD PTR [0044D050],19 然後就要抓改[0044D050]的要害罗... BPM XXXX:YYYYYYYY ([0044D050]的位址)... 然後慢慢下G指令... 直到如下:

XXXX:0044426E MOVSX EAX,WORD PTR [0045D050] XXXX:00444275 MOV [EBO+FFFFFF08],EAX

这两行使[EBO+FFFFFF08]=[0045D050]

XXXX:0044427B MOV DWORD PTR [EBP-04],0000004D XXXX:00444282 MOV ECX,[EBP+FFFFFF08]

将[EBP+FFFFFF08]的值搬到ECX...

XXXX:00444288 ADD ECX,01 ;嘿嘿...将ECX加一... XXXX:0044428B MOV [EBP+FFFFFF08],ECX ;加一後在存回去

所以我们得转移目标啦... BPM AAAA:BBBBBBBB ([EBP+FFFFFF08]的位址)

8.设断後...开始下G指令...慢慢来喔... 直到如下:

XXXX:00444428 CMP DWORD PTR [EBP+FFFFFF08],31 ;嘿嘿...比对核心罗... 31H=49(10进位)... XXXX:0044442F JLE 0044444D ;若是[EBP+FFFFFF08]中的资料 比31H小就跳到0044444D... XXXX:00444431 MOV DWORD PTR [EBP-04],00000053 XXXX:00444438 CALL 00446A70 ;死亡的界线 !!! XXXX:0044443D MOV DWORD PTR [EBP-04],00000054 XXXX:00444444 NOV WORD PTR [EBP-04],FFFF XXXX:0044444D MOV DWORD PTR [EBP-04],00000056

所以再将XXXX:0044442F JLE 0044444D改成JMP 0044444D 就收工啦 !!!

9.再次整理一遍:

软体名: The Bologna Pony Express v2.25 修改码: 改 BolognaPonyT.exe FIND: 7E 13 E8 14 28 01 00 EDIT: EB -- -- -- -- -- --

FIND: 7E 1C C7 45 FC 53 00 00 00 EDIT: EB -- -- -- -- -- -- -- --

--: 表不用修改之处

=============================================================================== yhq 破解实战录 11 --- Internet Utilities 97 v2.0.24 破解法 !!!

以下称此软体为IU97...

1.执行 IU97... 他会劈头就问你是否购买,选 Buy Now,再选 Starfish Operator... 在 Unlocking Code 的地方填入 1234567890 ... 一定要填十个字,理由待会说...

2.Ctrl-D 切入S-ICE...

3.下bpx hmemcpy指令(老步数)...

4.按F5切回IU97...按ok键...

5.S-ICE在此拦下:

KERNEL!HMEMCPY XXXX:9E30 PUSH BP XXXX:9E31 MOV BP,SP

在Win95的KERNEL系统模组中的HMEMCPY这个API拦下...

6.然後 BD * 把中断点先暂停... 一直按F12....跳回IU97领空(IU97主程式模组)... 此时返回的是IU97中的SIU模组... 可看到如下的程式码:

XXXX:00402431 CALL [USER32!GETDLGITEMTEXTA];这个USER32!GETDLGITEMTEXTA 系统模组API是用来读取字串的 所以也可用 bpx GETDLGITEMTEXTA 来拦下,不一定要用 bpx hmemcpy XXXX:00402437 MOV ECX,FFFFFFFF XXXX:0040243C SUB EAX,EAX XXXX:0040243E REPNZ SCASB XXXX:00402440 NOT ECX XXXX:00402442 DEC ECX XXXX:00402443 CMP ECX,0A ;这就是我说为何要设十个字注册码 XXXX:00402446 JZ 0040247B ;若是十个字,就跳到0040247B XXXX:00402448 LEA EAX,[ESP+08] ;若执行到此,就完啦!

7.按F10继续往下追...

XXXX:004024D2 CALL [USER32!MESSAGEBOXA];这个API是用来显示注册码错误的 XXXX:004024D8 MOV EAX,FFFFFFFF XXXX:004024DD POP EDI

8.所以我们往前找,看看那里可以让我们跳离开这里...

XXXX:00402492 PUSH 004180D0 XXXX:00402497 PUSH 004180E0 XXXX:0040249C CALL 00415250 ;要害CALL!!! XXXX:004024A1 ADD ESP,08 XXXX:004024A4 TEST EAX,EAX ;嘿嘿,眼熟吧 XXXX:004024A6 JNZ 004024B3 ;若是跳到004024B3就死定啦 XXXX:004024A8 XOR EAX,EAX ;生命之泉,使EAX=0 XXXX:004024AA POP EDI XXXX:004024AB POP ESI

所以在XXXX:0040249C CALL 00415250设断,重追一次...

9.追入XXXX:0040249C CALL... 一直按F10...直到如下∶

XXXX:00415270 MOV AL,[ESI] ;ESI指向我们输入的注册码 XXXX:00415272 INC ESI XXXX:00415273 MOV AH,[EDI] ;EDI指向正确的注册码 XXXX:00415275 INC EDI XXXX:00415276 CMP AH,AL ;要害!!!比对核心!!! XXXX:00415278 JZ 0041526C ;相同则跳到0041526C

所以执行到∶ XXXX:00415270 MOV AL,[ESI]...下 D ESI...看到我们输入的注册码 1234567890 XXXX:00415273 MOV AH,[EDI]...下 D EDI...看到正确的注册码 PFABLJXIVS

当然也可改程式码,变成随便注册版...

10.整理∶

程式名∶Internet Utilities 97 v2.0.24 取得处∶Hope-Net (37) \Internet\misc\iu97trl.exe 注册码∶PFABLJXIVS Enjoy it...Crack by yhq 1997.07.09