【破解作者】 mrvampire
【使用工具】 Ollydbg1.10,peid0.94
【破解平台】 WinXP
【软件名称】 acafeel的crackme
【下载地址】 http://www.unpack.cn/thread-12462-1-1.html
【加壳方式】 UPX3.0
【使用工具】 Ollydbg110,peid0.94
【破解声明】 看了acafeel 兄的Crackme觉得很不错,就用他UPX3.0加壳的CrackMe.UNpackCN做个简单的手脱教程吧,很简单没有技术含量,菜鸟学习而已!
【破解过程】
1.用peid0.94查壳, 什么也没发现 要是layper 不说还以为没壳呢!Upx3.0是个压缩壳,试试esp定律吧,let's go!
2.用OD载入,忽略所有异常,用插件隐藏OD,程序停在 00570B00 > 60 PUSHAD
∨
F8 步过一下,发现右边寄存器窗口中的ESP 由0012FFC4 变为 0012FFA4
∨
在0012FFA4处右键---在数据窗口跟随
∨
在左下角的窗口 0012FFC4
7C816FD7 返回到 kernel32.7C816FD7 (红字
7C816FD7)处点右键--断点--设置硬件访问断点--字
∨
F9运行一下,程序停在 00571694 然后清除断点,
///////////////////////////////////////////////////////////
00571694 8D4424 80 LEA EAX,DWORD PTR SS:[ESP-80] // 停在此处
00571698 6A 00 PUSH 0 // F8
0057169A 39C4 CMP ESP,EAX // F8
0057169C ^ 75 FA JNZ SHORT CrackMe_.00571698 //往回跳? NO!脱壳时尽量不要让程序往回跳!
0057169E 83EC 80 SUB ESP,-80 // 左键点这一下,然后F4
005716A1 ^ E9 BEDAFAFF JMP CrackMe_.0051F164 //这步也往回跳?不过只能让它跳,要不就不出错, 这步应该就能跳到OEP了!
005716A6 0000 ADD BYTE PTR DS:[EAX],AL //
005716A8 C016 57 RCL BYTE PTR DS:[ESI],57 ; 移动常数超出 1..31 的范围
/////////////////////////////////////////////////////////
0051F164 55 PUSH EBP // 个人觉得这就是OEP了(不知道对不对,在此DUMP ! 再查壳为Borland Delphi 4.0 - 5.0)
0051F165 8BEC MOV EBP,ESP
0051F167 83C4 F4 ADD ESP,-0C
0051F16A B8 E4EE5100 MOV EAX,CrackMe_.0051EEE4
0051F16F E8 D076EEFF CALL CrackMe_.00406844
0051F174 A1 204A5200 MOV EAX,DWORD PTR DS:[524A20]
0051F179 8B00 MOV EAX,DWORD PTR DS:[EAX]
///////////////////////////////////////////////////////////
再用PEID查壳为 Borland Delphi 4.0 - 5.0 可以正常运行程序,算法没有分析!呵呵,
如有不对之处敬请指教!谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)