某智能加密狗破解
1、用PEID查壳,为Borland Delphi 6.0 – 7.0,Delphi写的,无壳。
2、不插狗,试运行程序,弹出对话框,显示“操作加密锁失败!原因可能是
无加密锁或版本不正确。返回码:-53”。
3、用OD加载,停在入口:
0071FC04 > 55 push ebp //OEP,停在此处
0071FC05 8BEC mov ebp,esp
0071FC07 B9 05000000 mov ecx,5
0071FC0C 6A 00 push 0
0071FC0E 6A 00 push 0
0071FC10 49 dec ecx
0071FC11 ^ 75 F9 jnz short EasyCraf.0071FC0C
0071FC13 51 push ecx
0071FC14 53 push ebx
0071FC15 B8 44F07100 mov eax,EasyCraf.0071F044
查找字符串:“操作加密锁失败!原因可能是无加密锁或版本不正确。返回码:-53”,
来到下面的代码:
0054AC85 /EB 43 jmp short EasyCraf.0054ACCA
0054AC87 |8BC6 mov eax,esi
0054AC89 |BA 3CAE5400 mov edx,EasyCraf.0054AE3C ; 操作
加密锁失败!原因可能是无加密锁或版本不正确。返回码:-53
0054AC8E |E8 2DAAEBFF call EasyCraf.004056C0
0054AC93 |EB 35 jmp short EasyCraf.0054ACCA
向上翻
0054ABDC 55 push ebp //在此处下断
0054ABDD 8BEC mov ebp,esp
0054ABDF 6A 00 push 0
0054ABE1 53 push ebx
0054ABE2 56 push esi
运行程序,堆栈中显示如下:
0012FE54 0054AF42 返回到 EasyCraf.0054AF42 来自
EasyCraf.0054ABDC
0012FE58 00000030
0012FE5C 0012FF84 指针到下一个 SEH 记录
0012FE60 0054AF73 SE 句柄
0012FE64 0012FE70
0012FE68 00731C20 EasyCraf.00731C20
再跟随,来到下面:
0054AF90 81C4 F8FEFFFF add esp,-108
0054AF96 8BCC mov ecx,esp
0054AF98 B8 D8AF5400 mov eax,EasyCraf.0054AFD8 ;
easycraft.exp
0054AF9D 33D2 xor edx,edx
0054AF9F E8 FC45FFFF call EasyCraf.0053F5A0 //这里读狗,
跟进
0054AFA4 A3 2C927200 mov dword ptr ds:[72922C],eax
0054AFA9 833D 2C927200 00 cmp dword ptr ds:[72922C],0
0054AFB0 75 13 jnz short EasyCraf.0054AFC5
0054AFB2 B8 28927200 mov eax,EasyCraf.00729228
0054AFB7 8BD4 mov edx,esp
0054AFB9 B9 05010000 mov ecx,105
0054AFBE E8 19A9EBFF call EasyCraf.004058DC
0054AFC3 EB 0A jmp short EasyCraf.0054AFCF
0054AFC5 A1 2C927200 mov eax,dword ptr ds:[72922C]
0054AFCA E8 51FFFFFF call EasyCraf.0054AF20
0054AFCF 81C4 08010000 add esp,108
0054AFD5 C3 retn
往下翻,来到下面的代码:
0053F6D6 E8 D5010000 call EasyCraf.0053F8B0
0053F6DB 894424 10 mov dword ptr ss:[esp+10],eax
0053F6DF 837C24 10 00 cmp dword ptr ss:[esp+10],0
0053F6E4 74 06 je short EasyCraf.0053F6EC
0053F6E6 8B4424 10 mov eax,dword ptr ss:[esp+10]
0053F6EA EB 29 jmp short EasyCraf.0053F715
0053F6EC 807C24 18 7B cmp byte ptr ss:[esp+18],7B
0053F6F1 75 15 jnz short EasyCraf.0053F708
0053F6F3 807C24 19 7B cmp byte ptr ss:[esp+19],7B
0053F6F8 75 0E jnz short EasyCraf.0053F708
0053F6FA 807C24 1A 7B cmp byte ptr ss:[esp+1A],7B
0053F6FF 75 07 jnz short EasyCraf.0053F708
0053F701 807C24 1B 7B cmp byte ptr ss:[esp+1B],7B
0053F706 74 0B je short EasyCraf.0053F713
0053F708 837C24 10 00 cmp dword ptr ss:[esp+10],0
0053F70D ^ 0F84 5CFFFFFF je EasyCraf.0053F66F
0053F713 33C0 xor eax,eax
0053F715 81C4 2C020000 add esp,22C
0053F71B C3 retn
0053F6E4 此行代码NOP掉,程序往下执行,就可以跳过0053F713
33C0 xor eax,eax,保存修改。
继续单步执行,发现还有读狗的地方,同样的方法修改,保存程序。
4、试运行保存的程序,可正常运行。
至此,破解完成。