资料整理: 高春辉, ID: Paul Gao, 沈阳华储 BBS 站.  站台电话: (024)3846411.
===============================================================================
yhq 破解实战录 01 --- Teleport Pro (pro12.exe) 破解法 !!!

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

== E-mail: paulgao@nease.net = 完 = 资料整理: 高春辉 于 06/09/97, 08/28/97. ===