好友
阅读权限10
听众
最后登录1970-1-1
|
male
发表于 2010-7-30 09:55
本帖最后由 male 于 2010-8-15 19:46 编辑
ESP定律法
00494995 > B8 68BA5A00 mov eax,DNF海啸.005ABA68//载入停在这里,F8单步
0049499A 50 push eax
0049499B 64:FF35 0000000>push dword ptr fs:[0]//停到这里,寄存器ESP变红
004949A2 64:8925 0000000>mov dword ptr fs:[0],esp
004949A9 33C0 xor eax,eax
004949AB 8908 mov dword ptr ds:[eax],ecx
004949AD 50 push eax
寄存器:=======================================
EAX 005ABA68 DNF海啸.005ABA68
ECX 0012FFB0
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFD4000
ESP 0012FFC0//右键->在数据窗口跟随
EBP 0012FFF0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 0049499B DNF海啸.0049499B
C 0 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 1 DS 0023 32位 0(FFFFFFFF)
S 0 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -UNORM BCDC 01050104 00000000
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
3 2 1 0 E S P U O Z D I
FST 4020 Cond 1 0 0 0 Err 0 0 1 0 0 0 0 0 (EQ)
FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1
数据窗口:=============================
0012FFC0 005ABA68 DNF海啸.005ABA68//右键->断点->设置硬件访问断点->Word
再F9运行,删除硬件断点
7C957826 3B45 F8 cmp eax,dword ptr ss:[ebp-0x8]//OD停在这里,F8单步走
7C957829 72 09 jb short ntdll.7C957834
7C95782B 3B45 F4 cmp eax,dword ptr ss:[ebp-0xC]
7C95782E ^ 0F82 F731FFFF jb ntdll.7C94AA2B
7C957834 50 push eax
7C957835 E8 67000000 call ntdll.7C9578A1
7C95783A 84C0 test al,al
7C95783C ^ 0F84 E931FFFF je ntdll.7C94AA2B
7C957842 F605 5AC3997C 8>test byte ptr ds:[0x7C99C35A],0x80
7C957849 0F85 20720100 jnz ntdll.7C96EA6F //F8到这里的时候,跳转没有实现,看寄存器
寄存器=============================
EAX 0012FC01
ECX 0000A38D
EDX 00000000
EBX 0012FFBC
ESP 0012FC4C
EBP 0012FCBC
ESI 0012FCD4
EDI 7C930738 ntdll.7C930738
EIP 7C957849 ntdll.7C957849
C 0 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 1 DS 0023 32位 0(FFFFFFFF))//改Z 1为Z 0,让上面的跳转实现
S 0 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -UNORM BCDC 01050104 00000000
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
3 2 1 0 E S P U O Z D I
FST 4020 Cond 1 0 0 0 Err 0 0 1 0 0 0 0 0 (EQ)
FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1
7C96EA6F 6A 10 push 0x10//来到这里,F8单步走
7C96EA71 53 push ebx
7C96EA72 6A 00 push 0x0
7C96EA74 FF75 0C push dword ptr ss:[ebp+0xC]
7C96EA77 56 push esi
7C96EA78 E8 136B0100 call ntdll.7C985590
7C96EA7D 8945 F0 mov dword ptr ss:[ebp-0x10],eax
7C96EA80 ^ E9 CA8DFEFF jmp ntdll.7C95784F//往回跳
7C96EA85 57 push edi
7C96EA86 FF75 F0 push dword ptr ss:[ebp-0x10]
7C96EA89 E8 0C6B0100 call ntdll.7C98559A
7C96EA8E ^ E9 DC8DFEFF jmp ntdll.7C95786F
7C96EA93 8366 04 EF and dword ptr ds:[esi+0x4],-0x11
7C96EA97 8365 08 00 and dword ptr ss:[ebp+0x8],0x0
OD到里这里
005ABA9B 53 push ebx
005ABA9C 51 push ecx
005ABA9D 57 push edi
005ABA9E 56 push esi
005ABA9F 52 push edx
005ABAA0 8D98 57120010 lea ebx,dword ptr ds:[eax+0x10001257]]//F8单步走到这里,ESP方法,右键->在
数据窗口跟随============
0012FFAC 7C92EB94 ntdll.KiFastSystemCallRet //右键->断点->设置硬件访问断点->Word
F9运行,删除硬件断点
005ABB24 5E pop esi //OD停在这里,F8单步走
005ABB25 5F pop edi
005ABB26 59 pop ecx
005ABB27 5B pop ebx
005ABB28 5D pop ebp
005ABB29 - FFE0 jmp eax ; DNF海啸.<模块入口点> //跳到OEP, :-)F8
到这里就是 OEP======================
00494995 > 55 push ebp
00494996 8BEC mov ebp,esp
00494998 6A FF push -0x1
0049499A 68 38195500 push DNF海啸.00551938
0049499F 68 14744900 push DNF海啸.00497414
自带插件脱之 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|