DnNuke Crackme1.1分析
【文章标题】: DnNuke Crackme1.1分析【文章作者】: Sniy
【软件名称】: DnNuke Crackme1.1
【软件大小】: 207KB
【下载地址】: 自己搜索下载
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo
【保护方式】: 压缩壳
【编写语言】: Delphi
【使用工具】: OD、DEDE、PEID...
【操作平台】: Win XP sp3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
看到Nisy老大第九期开始报名,昨天晚上看到上面还挂这个crackme,当时就下载下来看了看,昨天弄完之后本想上去回复呢...
不晓得一看crackme被撤了...
现在我就把我的分析发上来了,呵呵...
一、工作思路
0、资料收集
1、查壳
2、脱壳
3、调试
二、详细步骤
0、资料收集
打开软件,输入序列号:11111111,无任何提示...狂晕....
1、查壳
使用Peid0.94版本查壳为:UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo
2、脱壳
UPX的壳脱法太多了...大家如果懒的话可以用脱壳工具,我这里用ESP定律
OD载入,F8单步一下,ESP变红
00473460 >60 PUSHAD
00473461 BE 00104400 MOV ESI,crackme.00441000 ;ESP处地址变红
00473466 8DBE 0000FCFF LEA EDI,DWORD PTR DS:
在ESP处选中,右键:数据窗口中跟随,然后下硬件访问断点,Shift+F9(或F9)执行
004735E4^\E9 AB23FEFF JMP crackme.00455994 ;执行到此处
004735E9 0000 ADD BYTE PTR DS:,AL
004735EB 0008 ADD BYTE PTR DS:,CL
取消硬件断点,单步F8到OEP00455994 55 PUSH EBP ;OEP位置
00455995 8BEC MOV EBP,ESP
00455997 83C4 F4 ADD ESP,-0C
0045599A B8 74584500 MOV EAX,crackme.00455874
0045599F E8 6C02FBFF CALL crackme.00405C10
脱壳,修复....
3、调试
OD载入,查找ASCII,得到以下
超级字串参考, 条目 15
地址=004555F1
反汇编=MOV EDX,111.004556C8
文本字串=9877553311
超级字串参考, 条目 17
地址=00455620
反汇编=MOV EDX,111.0045572C
文本字串=9977553311
得出结论:很可能为明码比较...我们继续...
因为本程序为delphi编写,所以我们用GetWindowTextA或者GetDlgItemTextA一般是无法下断的...
那怎么办呢...很好办,我们用dede查找OK按钮的地址,在OK按钮地址下断就可以了...
经过dede查找OK按钮为clickbutton1地址为:004555A4 55 push ebpbp 004555A4 下断 ——> F9 ——>输入 :11111111111111111 ——>OK , 断在004555A4/.55 PUSH EBP
004555A5|.8BEC MOV EBP,ESP
004555A7|.6A 00 PUSH 0
004555A9|.53 PUSH EBX
004555AA|.8BD8 MOV EBX,EAX
004555AC|.33C0 XOR EAX,EAX取消断点,F8单步004555BA|.8D55 FC LEA EDX,DWORD PTR SS:
004555BD|.8B83 C4020000 MOV EAX,DWORD PTR DS:
004555C3|.E8 78D3FCFF CALL 111.00422940
004555C8|.837D FC 00 CMP DWORD PTR SS:,0 ;判断输入的注册码是否空
004555CC|.77 12 JA SHORT 111.004555E0 ;是空则按下面几步直接跳出
004555CE|.BA 78564500 MOV EDX,111.00455678
004555D3|.8B83 C4020000 MOV EAX,DWORD PTR DS:
004555D9|.E8 92D3FCFF CALL 111.00422970
004555DE|.EB 6F JMP SHORT 111.0045564F
004555E0|>8D55 FC LEA EDX,DWORD PTR SS:
004555E3|.8B83 C4020000 MOV EAX,DWORD PTR DS:;将注册码给首地址给EAX
004555E9|.E8 52D3FCFF CALL 111.00422940
004555EE|.8B45 FC MOV EAX,DWORD PTR SS:
004555F1|.BA C8564500 MOV EDX,111.004556C8 ;9877553311
004555F6|.E8 81E5FAFF CALL 111.00403B7C;这里比较,如果你输入的与9877553311一样
004555FB|.75 12 JNZ SHORT 111.0045560F ;如果匹配不上则继续下一个注册码比较
004555FD|.BA DC564500 MOV EDX,111.004556DC ;Yer almost there :)
00455602|.8B83 C4020000 MOV EAX,DWORD PTR DS:
00455608|.E8 63D3FCFF CALL 111.00422970
0045560D|.EB 40 JMP SHORT 111.0045564F
0045560F|>8D55 FC LEA EDX,DWORD PTR SS:
00455612|.8B83 C4020000 MOV EAX,DWORD PTR DS:
00455618|.E8 23D3FCFF CALL 111.00422940
0045561D|.8B45 FC MOV EAX,DWORD PTR SS:
00455620|.BA 2C574500 MOV EDX,111.0045572C ;9977553311
00455625|.E8 52E5FAFF CALL 111.00403B7C ;这里对注册码进行比较
0045562A|.75 23 JNZ SHORT 111.0045564F
0045562C|.A1 10884500 MOV EAX,DWORD PTR DS:
00455631|.8378 3C 78 CMP DWORD PTR DS:,78
00455635|.75 18 JNZ SHORT 111.0045564F
00455637|.6A 00 PUSH 0
00455639|.B9 38574500 MOV ECX,111.00455738 ;Good crackah :)
0045563E|.BA 48574500 MOV EDX,111.00455748 ;Damn yer good ;). But if this is your first time, then I guess you changed the flag to 0 wich is wrong! Now go back and try again :).. But if ya did make it plz mail me how you did it.. [email protected]
00455643|.A1 18754500 MOV EAX,DWORD PTR DS:
00455648|.8B00 MOV EAX,DWORD PTR DS:解决方式有两种:
第一种:注册码为:9977553311 同时NOP掉: 00455635 JNZ SHORT 111.0045564F
第二种:注册码为:9977553311 同时观察:00455631CMP DWORD PTR DS:,78 ;此处为比较窗口大小...
120 = 0x78H...窗体高度...【小小提示】
--------------------------------------------------------------------------------
【经验总结】
没什么经验总结,就是一步一步的来就可以了...呵呵
大家加油!PYG加油!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!
2009年10月11日 11:26:51
[ 本帖最后由 sniy 于 2009-10-11 11:50 编辑 ] 不知道为什么论坛不支持 .... ? 呵呵这个是很久的东西了 当时还顶你了以呵呵
等待新的测试题吧呵呵 好的 ... 呵呵谢谢哈 等待后面题目 ... 自己先下载试试手。 直接搜索字符串不是更快? 把那个CM下来看看 呵。。。学习了,我才刚起步,以后向大家多学习才是 文章写得不错,继续加油
页:
[1]
2