- UID
- 26819
注册时间2007-2-14
阅读权限60
最后登录1970-1-1
亢龙有悔
TA的每日心情 | 开心 2018-7-21 10:19 |
---|
签到天数: 14 天 [LV.3]偶尔看看II
|
发表于 2008-3-12 02:16:22
|
显示全部楼层
1楼的Crackme爆破
没用E写过程序,为了查E的窗体控件的属性,用精简E在窗体上面放上2个按钮(其中一个禁用)、2个文本框(其中一个只读),生成.exe后,用ultraedit或其他16进制编辑器搜索“按钮1”、“文本框1”等定位到控件的二进制数据上,分别对比2个按钮及2个文本框二进制数据的不同,很容易发现哪一位是控制按钮禁用与否以及文本框的只读标记位:
正常按钮=05 禁用按钮=07
正常文本框=00 只读文本框=01
具体偏移自己试一下就知道到了,知道了这些,Ultraedit打开crackme.exe,修改0x6d9ed处为05、0x712ca处为00(通过搜索“Enable Me”、“使我可输入”来定位),保存即可激活“Enable Me”按钮和去掉第二个文本框的只读属性。
去除NAG:OD载入目标程序,F9运行,出现NAG窗口后,OD中Alt+M,在crackme的.ecode段下内存访问断点,然后点NAG窗口的“确定”按钮
断在0047239B:
0047235F 55 PUSH EBP ;入口
00472360 8BEC MOV EBP,ESP
00472362 81EC 08000000 SUB ESP,8
00472368 68 04000080 PUSH 80000004 ;这里开始爆破跳过对话框显示,改为 JMP SHORT 0047239E
0047236D 6A 00 PUSH 0
0047236F 68 CBC04000 PUSH creakme.0040C0CB ; ASCII "NAG"
00472374 68 01030080 PUSH 80000301
00472379 6A 00 PUSH 0
0047237B 68 00000000 PUSH 0
00472380 68 04000080 PUSH 80000004
00472385 6A 00 PUSH 0
00472387 68 CFC04000 PUSH creakme.0040C0CF
0047238C 68 03000000 PUSH 3
00472391 BB 00030000 MOV EBX,300
00472396 E8 82040000 CALL creakme.0047281D ;显示nag对话框
0047239B 83C4 28 ADD ESP,28 ;内存访问断点断在这里
0047239E 68 00000000 PUSH 0
004723A3 BB C4060000 MOV EBX,6C4
004723A8 E8 70040000 CALL creakme.0047281D
004723AD 83C4 04 ADD ESP,4
004723B0 68 01030080 PUSH 80000301
004723B5 6A 00 PUSH 0
004723B7 50 PUSH EAX
004723B8 68 01000000 PUSH 1
004723BD BB 68010000 MOV EBX,168
004723C2 E8 56040000 CALL creakme.0047281D
004723C7 83C4 10 ADD ESP,10
004723CA 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004723CD 6A 00 PUSH 0
004723CF FF75 F8 PUSH DWORD PTR SS:[EBP-8]
004723D2 6A FF PUSH -1
004723D4 6A 08 PUSH 8
004723D6 68 06000116 PUSH 16010006
004723DB 68 01000152 PUSH 52010001
004723E0 E8 4A040000 CALL creakme.0047282F
004723E5 83C4 18 ADD ESP,18
004723E8 8B5D F8 MOV EBX,DWORD PTR SS:[EBP-8]
004723EB 85DB TEST EBX,EBX
004723ED 74 09 JE SHORT creakme.004723F8
004723EF 53 PUSH EBX
004723F0 E8 2E040000 CALL creakme.00472823
004723F5 83C4 04 ADD ESP,4
004723F8 8BE5 MOV ESP,EBP
004723FA 5D POP EBP
004723FB C3 RETN
爆破点00472368 /EB 34 JMP SHORT creakme.0047239E
注意选择跳转目标时要保持堆栈平衡,否则死翘翘。
下面来爆注册部分:
主窗口出来后,同上ALT+M在crackme的.ecode段下内存访问断点,按主窗口“确定”按钮,直接断在了按钮事件处理入口:
0047253A 55 PUSH EBP
0047253B 8BEC MOV EBP,ESP
0047253D 81EC 28000000 SUB ESP,28
00472543 C745 F8 0000000>MOV DWORD PTR SS:[EBP-8],0 ;这里开跳,改为jmp 00472752
0047254A C745 FC 0000000>MOV DWORD PTR SS:[EBP-4],0
。。。。。。。。。。。省略注册算法NN行
0047274F 3955 F4 CMP DWORD PTR SS:[EBP-C],EDX
00472752 0F85 3B000000 JNZ creakme.00472793
00472758 68 04000080 PUSH 80000004
0047275D 6A 00 PUSH 0
0047275F 68 7CC14000 PUSH creakme.0040C17C
00472764 68 01030080 PUSH 80000301
00472769 6A 00 PUSH 0
0047276B 68 00000000 PUSH 0
00472770 68 04000080 PUSH 80000004
00472775 6A 00 PUSH 0
00472777 68 81C14000 PUSH creakme.0040C181
0047277C 68 03000000 PUSH 3
00472781 BB 00030000 MOV EBX,300
00472786 E8 92000000 CALL creakme.0047281D ;注册成功
0047278B 83C4 28 ADD ESP,28
。。。。。。。。
[ 本帖最后由 roking 于 2008-3-12 02:17 编辑 ] |
评分
-
查看全部评分
|