1. Dump点搜索:
以前的版本,挂在用CreateFile加载的kernel32!Sleep,就很容易找到dump
位置,这个似乎不同了,也不知道是什么版本.
先随便找个地方下断,比如对第1个区段下写入断点,目的是等VM所在内存分
配,然后在VM内搜索出口:
popad
popfd
ret
对找到的所有结果下断,写个脚本记录一下调用过程:
var counter
var ret_addr
mov counter,0
eob l_record
eoe l_record
run
l_record:
mov ret_addr,[esp]
log ret_addr
esto
结果:
........
00DDCBD3 Breakpoint at 00DDCBD3
ret_addr = 0088A795
00E42EF0 Breakpoint at 00E42EF0
ret_addr = 0088B084
00E4F835 Breakpoint at 00E4F835
ret_addr = 0088BAA2 <---- 这个
00E42EF0 Breakpoint at 00E42EF0
ret_addr = 02FA1A7E
00E4F835 Breakpoint at 00E4F835
ret_addr = 0046228E
00DDCBD3 Breakpoint at 00DDCBD3
ret_addr = 00402750
00E4F835 Breakpoint at 00E4F835
ret_addr = 00460327
00E42EF0 Breakpoint at 00E42EF0
ret_addr = 00402790
00E5D56F Breakpoint at 00E5D56F
ret_addr = 00410D1E
Thread 000005E4 terminated, exit code 0
Thread 00000184 terminated, exit code 0
Thread 000003DC terminated, exit code 0
最后几项的返回地址在原程序了,还有个02FA1A7E是模仿的GetVersion。
Ctrl-F2重来,在0088BAA2下断,还有一两次SMC解码(大概有,记不清了),
很容易找到dump点:
0088C432 /0F86 01000000 jbe GameMon.0088C439
0088C438 |F5 cmc
0088C439 \9D popfd
0088C43A C3 retn
-> 这里:
007D4BF3 68 54235132 push 32512354
007D4BF8 ^ E9 B9C6FFFF jmp GameMon.007D12B6
007D4BFD 68 C4711C55 push 551C71C4
007D4C02 ^ E9 AFC6FFFF jmp GameMon.007D12B6
007D4C07 FB sti
007D4C08 D125 06E03800 shl dword ptr ds:[38E006],1
2. 避开IAT加密
写脚本挂到CreateFile加载的kernel32!VirtualAlloc,记录分配size,
当出现连续分配0x1000,0x2000,0x10000,最后的1个出来就到了.
00EDA072 Hardware breakpoint 1 at 00EDA072
counter = 00000007
ret_addr = 007D787D
cbSize = 00001000
00EDA072 Hardware breakpoint 1 at 00EDA072
counter = 00000008
ret_addr = 007D789F
cbSize = 00002000
00EDA072 Hardware breakpoint 1 at 00EDA072
counter = 00000009
ret_addr = 007D78BF <---- 这里
cbSize = 00010000 | UNICODE "=::=::\"
007D78BF 8985 A9271406 mov dword ptr ss:[ebp+61427A9],eax
007D78C5 8BB5 31321406 mov esi,dword ptr ss:[ebp+6143231] ; GameMon.007CE59A
007D78CB 8B9D 41051406 mov ebx,dword ptr ss:[ebp+6140541]
007D78D1 89B5 05081406 mov dword ptr ss:[ebp+6140805],esi ; GameMon.007CE59A
007D78D7 899D C9021406 mov dword ptr ss:[ebp+61402C9],ebx
007D78DD 8B9D 41051406 mov ebx,dword ptr ss:[ebp+6140541]
007D78E3 8B0B mov ecx,dword ptr ds:[ebx]
007D7