- UID
- 55584
注册时间2008-9-3
阅读权限20
最后登录1970-1-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:[ESI+FFFC0000]
-
复制代码 在ESP处选中,右键:数据窗口中跟随,然后下硬件访问断点,Shift+F9(或F9)执行
- 004735E4 ^\E9 AB23FEFF JMP crackme.00455994 ;执行到此处
- 004735E9 0000 ADD BYTE PTR DS:[EAX],AL
- 004735EB 0008 ADD BYTE PTR DS:[EAX],CL
-
复制代码 取消硬件断点,单步F8到OEP- 00455994 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地址为:bp 004555A4 下断 ——> F9 ——> 输入 :11111111111111111 ——>OK , 断在- [size=1]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:[EBP-4]
- 004555BD |. 8B83 C4020000 MOV EAX,DWORD PTR DS:[EBX+2C4]
- 004555C3 |. E8 78D3FCFF CALL 111.00422940
- 004555C8 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; 判断输入的注册码是否空
- 004555CC |. 77 12 JA SHORT 111.004555E0 ; 是空则按下面几步直接跳出
- 004555CE |. BA 78564500 MOV EDX,111.00455678
- 004555D3 |. 8B83 C4020000 MOV EAX,DWORD PTR DS:[EBX+2C4]
- 004555D9 |. E8 92D3FCFF CALL 111.00422970
- 004555DE |. EB 6F JMP SHORT 111.0045564F
- 004555E0 |> 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
- 004555E3 |. 8B83 C4020000 MOV EAX,DWORD PTR DS:[EBX+2C4]; 将注册码给首地址给EAX
- 004555E9 |. E8 52D3FCFF CALL 111.00422940
- 004555EE |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
- 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:[EBX+2C4]
- 00455608 |. E8 63D3FCFF CALL 111.00422970
- 0045560D |. EB 40 JMP SHORT 111.0045564F
- 0045560F |> 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
- 00455612 |. 8B83 C4020000 MOV EAX,DWORD PTR DS:[EBX+2C4]
- 00455618 |. E8 23D3FCFF CALL 111.00422940
- 0045561D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
- 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:[458810]
- 00455631 |. 8378 3C 78 CMP DWORD PTR DS:[EAX+3C],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][email protected][/email]
- 00455643 |. A1 18754500 MOV EAX,DWORD PTR DS:[457518]
- 00455648 |. 8B00 MOV EAX,DWORD PTR DS:[EAX][/size]
复制代码 解决方式有两种:
第一种:注册码为:9977553311 同时NOP掉: 00455635 JNZ SHORT 111.0045564F
第二种:注册码为:9977553311 同时观察:00455631 CMP DWORD PTR DS:[EAX+3C],78 ;此处为比较窗口大小...
120 = 0x78H...窗体高度...【小小提示】
--------------------------------------------------------------------------------
【经验总结】
没什么经验总结,就是一步一步的来就可以了...呵呵
大家加油!PYG加油!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!
2009年10月11日 11:26:51
crackme.rar
(201.75 KB, 下载次数: 5)
[ 本帖最后由 sniy 于 2009-10-11 11:50 编辑 ] |
|