- UID
 - 2466
 
 注册时间2005-7-22
阅读权限20
最后登录1970-1-1
以武会友 
   
 
 
 
该用户从未签到  
 | 
 
破解说明:本软件未注册版的功能与注册版功能完全相同,只是启动程序时多了个要求注册的NG,本软件在DFCG早已经有人通过修改关键跳来实现爆破,但本人运用作者的方式进行爆破后,所得的程序运行后仍有NG,并且软件的大部分功能键变成了灰色按钮,本人也在DFCG上对此提出过疑问,后来也找到了解决方法,但是没有写出来,这次写出来供和我一样的菜鸟来分享。 
破解工具:fly版OD,PEID0.93 
操作系统:wundows XP 
破解原因:NG 
难度:很简单,适合象我一样的菜鸟拿来学习 
作者声明:初学cracking,仅作学习交流,无其它目的.如果你觉得本软件对你有用,建议你向软件作者购买注册版 
下载:www.chinabizman.com 
过程: 
PEID查,无壳,Dephli写的程序 
OD载入,用插件找到字符串“注册失败!,请检查机器码和服务商提供注册码是否一致”(因我是进入程序后才在任务栏注册),双击来到代码处 
  0088BB69    8D40 00         lea eax,dword ptr ds:[eax] 
0088BB6C    53              push ebx 
0088BB6D    56              push esi 
0088BB6E    8BF0            mov esi,eax 
0088BB70    8B0D 24FD8900   mov ecx,dword ptr ds:[89FD24] 
0088BB76    B2 01           mov dl,1 
0088BB78    A1 98EE7300     mov eax,dword ptr ds:[73EE98] 
0088BB7D    E8 76B5C1FF     call ftrade.004A70F8 
0088BB82    8BD8            mov ebx,eax 
0088BB84    8BC3            mov eax,ebx 
0088BB86    8B10            mov edx,dword ptr ds:[eax] 
0088BB88    FF92 EC000000   call dword ptr ds:[edx+EC] 
0088BB8E    48              dec eax 
0088BB8F    75 4B           jnz short ftrade.0088BBDC 
0088BB91    E8 2ACCD5FF     call ftrade.005E87C0 
0088BB96    84C0            test al,al 
0088BB98    75 09           jnz short ftrade.0088BBA3 
0088BB9A    E8 65CDD5FF     call ftrade.005E8904 
0088BB9F    84C0            test al,al--------------------------------------关键call 
0088BBA1    74 21           je short ftrade.0088BBC4------------------关键跳 
0088BBA3    6A 40           push 40 
0088BBA5    B9 E8BB8800     mov ecx,ftrade.0088BBE8 
0088BBAA    BA F0BB8800     mov edx,ftrade.0088BBF0 
0088BBAF    A1 40B18900     mov eax,dword ptr ds:[89B140] 
0088BBB4    8B00            mov eax,dword ptr ds:[eax] 
0088BBB6    E8 C530C2FF     call ftrade.004AEC80 
0088BBBB    8BC6            mov eax,esi 
0088BBBD    E8 8E080000     call ftrade.0088C450 
0088BBC2    EB 18           jmp short ftrade.0088BBDC 
0088BBC4    6A 40           push 40 
0088BBC6    B9 E8BB8800     mov ecx,ftrade.0088BBE8 
0088BBCB    BA FCBB8800     mov edx,ftrade.0088BBFC------------------来到这里 
0088BBD0    A1 40B18900     mov eax,dword ptr ds:[89B140] 
0088BBD5    8B00            mov eax,dword ptr ds:[eax] 
0088BBD7    E8 A430C2FF     call ftrade.004AEC80 
0088BBDC    8BC3            mov eax,ebx 
0088BBDE    E8 C580B7FF     call ftrade.00403CA8 
0088BBE3    5E              pop esi 
0088BBE4    5B              pop ebx 
0088BBE5    C3              retn 
向上找的关键的跳转和关键的call,发现text al,al是比较标志位,不是普通的明码比较,在关键call下断,运行程序,进入程序后输入相应的注册名及注册码,按“注册”,程序在关键call处被断了下来,里面的很简单,可以先F8一路粗看一遍,找到程序在返回call前的最后一次对eax的付值的代码处, 
005E8B01    64:8910         mov dword ptr fs:[eax],edx 
005E8B04    68 1E8B5E00     push ftrade.005E8B1E 
005E8B09    8D45 C4         lea eax,dword ptr ss:[ebp-3C] 
005E8B0C    BA 0F000000     mov edx,0F 
005E8B11    E8 D2C0E1FF     call ftrade.00404BE8 
005E8B16    C3              retn 
005E8B17  ^ E9 28B9E1FF     jmp ftrade.00404444 
005E8B1C  ^ EB EB           jmp short ftrade.005E8B09 
005E8B1E    8BC2            mov eax,ecx------------------------------就是这里了 
005E8B20    5E              pop esi 
005E8B21    5B              pop ebx 
005E8B22    8BE5            mov esp,ebp 
005E8B24    5D              pop ebp 
005E8B25    C3              retn 
看一下积存器的数值: 
EAX 00000000 
ECX 00000000 
EDX 0012FDFC 
EBX 00000000 
ESP 0012FC14 
EBP 0012FC58 
ESI 011F9D60 
EDI 0012FEB0 
EIP 005E8B1E ftrade.005E8B1E 
C 0  ES 0023 32bit 0(FFFFFFFF) 
P 1  CS 001B 32bit 0(FFFFFFFF) 
A 0  SS 0023 32bit 0(FFFFFFFF) 
Z 1  DS 0023 32bit 0(FFFFFFFF) 
S 0  FS 0038 32bit 7FFDE000(FFF) 
T 0  GS 0000 NULL 
D 0 
O 0  LastErr ERROR_SUCCESS (00000000) 
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE) 
ST0 empty -??? FFFF 00000000 00000000 
ST1 empty -??? FFFF 001C001C 001C001C 
ST2 empty -??? FFFF 00000000 00000000 
ST3 empty -??? FFFF 00000001 000C001C 
ST4 empty -NAN FFFF E386531C FF884804 
ST5 empty -??? FFFF 00000001 000D001C 
ST6 empty -??? FFFF 00000000 00000000 
ST7 empty 1.0000000000000000000 
               3 2 1 0      E S P U O Z D I 
FST 4000  Cond 1 0 0 0  Err 0 0 0 0 0 0 0 0  (EQ) 
FCW 1272  Prec NEAR,53  掩码    1 1 0 0 1 0 
 
很明显如果过了上面005E8B1E处的代码后eax的值将被付为0,如果al的值就为0,在我们关键跳转的条件将成立,那就K.O。在这个时候看看寄存器,我们就发现edx的值不为0,如果我们将上面的代码005E8B1E 8BC2 mov eax,ecx改成005E8B1E  8BC2   mov eax,edx, 
那么关键跳转的条件就不成立,也就达到了我们的目的。收工!!! 
运行修改后的程序,NG没了~~~~~~~~~~爽!!!请慢,到了程序里边,看看主菜单上面,还有带[未注册]的字样,TMD看着这个就不爽,OD再来载入程序,查找字符串“(未注册版本)” 
0088C4CF    84C0            test al,al 
0088C4D1    EB 21           jmp short ftrade.0088C4F4-------这里是我改好的了,原来是je还是jne不记得了 
0088C4D3    8D55 F0         lea edx,dword ptr ss:[ebp-10] 
0088C4D6    8BC3            mov eax,ebx 
0088C4D8    E8 8B14C0FF     call ftrade.0048D968 
0088C4DD    8D45 F0         lea eax,dword ptr ss:[ebp-10] 
0088C4E0    BA 20C68800     mov edx,ftrade.0088C620 
0088C4E5    E8 B289B7FF     call ftrade.00404E9C 
0088C4EA    8B55 F0         mov edx,dword ptr ss:[ebp-10] 
0088C4ED    8BC3            mov eax,ebx 
0088C4EF    E8 A414C0FF     call ftrade.0048D998 
0088C4F4    8D55 E8         lea edx,dword ptr ss:[ebp-18] 
将代码上面的跳转改成绝对跳转跳过即可。OK收工 
再次运行程序,怎么样?NG没了,(未注册版本)也没了,完美破解。 
 
[ 本帖最后由 tigerisme 于 2006-8-26 20:50 编辑 ] |   
 
 
 
 |