资料整理: 高春辉, 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. ===