Icontoy3.1破解纪录(上) (5千字)
Icontoy3.1破解纪录(上)大家好!我又回来了,这次给大家带来的教程是关于一个图标软件的,破解的过程中遇到了一点小挫折,当然,经过这次小挫折,自己又有了一点收获,所谓功力就是这样培养起来的,感觉也就是这样培养起来的吗!所以,对广大的初学者,我还是非常希望大家能自己多动手破破手头能找的到的软件,有些事情光看别人的教程是不能深刻理解的,自己动动手,效果就会好得多。好了,废话到此为止,READY?GO!
1.当然架起TRW2000,LOAD"ICONTOY.EXE",调出输入注册妈的窗口,随便输入一点信息.下面是我的输入,你完 全不必要和我的一样.
Registration name: luoyi
Registration code: 654321
2.CTRL+M切入TRW2000,干什么?下中断呀!先碰碰运气,就用"GETWINDOWTEXT"吧!在TRW2000的命令输入处输入
"G GETWINDOWTEXT"回车!好了,我们又回到程序界面中了.回车,马上,程序被"GETWINDOWTEXT"中断拦了下来.
接下来,就按照我上篇文章中说的,按F12了,看按多少次出现错误提示.按呀按呀,按呀按呀.呵呵....其实没
这么多,对这个程序来说,6次就走到头了--------"Registration key error"!
3.再来吧.重新填好信息,下好断点,拦住后,按6-1=5次F12,在TRW2000的代码窗口中,你能看到如下的代码:
015F:0044DFE8 E82FFAFFFF CALL 0044DA1C
015F:0044DFED 8945F4 MOV [EBP-0C],EAX <----------你停在这里!
015F:0044DFF0 33C0 XOR EAX,EAX
015F:0044DFF2 55 PUSH EBP
015F:0044DFF3 686CE04400 PUSH DWORD 0044E06C
015F:0044DFF8 64FF30 PUSH DWORD [FS:EAX]
...
...
015F:0044E015 E8425BFBFF CALL 00403B5C
015F:0044E01A 85DB TEST EBX,EBX
015F:0044E01C 7C0A JL 0044E028
015F:0044E01E 8BD3 MOV EDX,EBX
015F:0044E020 8B45F4 MOV EAX,[EBP-0C]
015F:0044E023 E8C8CCFDFF CALL 0042ACF0
015F:0044E028 85F6 TEST ESI,ESI
015F:0044E02A 7C0A JL 0044E036
015F:0044E02C 8BD6 MOV EDX,ESI
015F:0044E02E 8B45F4 MOV EAX,[EBP-0C]
015F:0044E031 E8DECCFDFF CALL 0042AD14
015F:0044E036 85F6 TEST ESI,ESI
015F:0044E038 7D0E JNL 0044E048
015F:0044E03A 85DB TEST EBX,EBX
015F:0044E03C 7D0A JNL 0044E048
015F:0044E03E B204 MOV DL,04
015F:0044E040 8B45F4 MOV EAX,[EBP-0C]
015F:0044E043 E8CC48FFFF CALL 00442914
015F:0044E048 8B45F4 MOV EAX,[EBP-0C]
015F:0044E04B 8B10 MOV EDX,[EAX]
015F:0044E04D FF92CC000000 CALL NEAR [EDX+CC] <--------这个CALL就是呼出错误时
... 的MESSAGEBOX的CALL!
...
015F:0044E066 E8CD4EFBFF CALL 00402F38
015F:0044E06B C3 RET
4.出错的地方找到了,下面就是往上看,看在哪儿可以有个有条件跳转(JZ/JNA/JA/JB..)可以绕过它的.可是..
很可惜,虽然上面有很多个TEST...,JZ/JNZ...可是分析来,分析去就是没有一个可以跳过出错的CALL的.怎
么办呢?我开始在这里也被困住了,(我也是名新手呀,经验非常不足,请各位大虾不要见笑.呵呵...)怎么才能
绕过去呢?想呀,想呀,想呀,想呀,终于想到了!我所在的子程序本身就是一个错误时执行的程序!我要绕过它,
只有到它的上层去找,在这里打转是转不出来的!想到了就干!F12几次(不要问我是多少次,出来一次,就往
上看看,看有没有有条件跳转可以跳过去的....)经过多次试验,我来到了下面这段代码:
015F:00485E8F A104E94800 MOV EAX,[0048E904]
015F:00485E94 E8BFFDFFFF CALL 00485C58 <--------明白了吧?这就是判断注册码正确
与否的CALL!
015F:00485E99 803D00E9480001 CMP BYTE [0048E900],01
015F:00485EA0 0F85C4000000 JNZ NEAR 00485F6A <--------注册码错误的时候就跳了!跳到-|
015F:00485EA6 8D55F8 LEA EDX,[EBP-08] |
........ <-----这中间都没有跳转语句, |
........ 就省略了. |
|
015F:00485F61 B201 MOV DL,01 |
015F:00485F63 8B08 MOV ECX,[EAX] |
015F:00485F65 FF5160 CALL NEAR [ECX+60] |
015F:00485F68 EB0A JMP SHORT 00485F74 <-----正确的时候就跳过出错的 |
MESSAGEBOX了! |
|
015F:00485F6A B82C604800 MOV EAX,0048602C <------这里来了!----------------------|
015F:00485F6F E80C81FCFF CALL 0044E080 <-------这就是困住我的那个CALL!
015F:00485F74 33C0 XOR EAX,EAX <-------我从这里出来了.
015F:00485F76 5A POP EDX
015F:00485F77 59 POP ECX
015F:00485F78 59 POP ECX
015F:00485F79 648910 MOV [FS:EAX],EDX
015F:00485F7C 68995F4800 PUSH DWORD 00485F99
015F:00485F81 8D45F4 LEA EAX,[EBP-0C]
015F:00485F84 E87FDBF7FF CALL 00403B08
015F:00485F89 8D45F8 LEA EAX,[EBP-08]
015F:00485F8C E877DBF7FF CALL 00403B08
015F:00485F91 C3 RET
怎么样?看明白我的注释了吧?好了,找到关键之处了!也算成功了一半吧?呵呵..先烤烤火,我的手都僵了,呵呵........
