WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2401查看
  • 0回复

主题

好友

4976

积分

论坛元老

发表于 2010-3-8 23:13:56 |显示全部楼层
目标程序是一个ZProtect 1.4 企业版加壳的程序。

1.到OEP去
对于这个版本来说,单纯的是ESP定律不再适用,什么意思呢?如果仅仅下硬件断点是断不下来的,我们需要一种[url=http://www.52wpe.net]外挂[/url]断点方式、
先单步走,仍然是走到pushad 以后下hr esp。然后Ctrl+G 输入GetModuleHandleA
到这里来7C80B731 >  8BFF            mov edi,edi

7C80B733    55              push ebp

7C80B734    8BEC            mov ebp,esp

7C80B736    837D 08 00      cmp dword ptr ss:[ebp+8],0

7C80B73A    74 18           je short kernel32.7C80B754<--- 在这里下F2断点.

7C80B73C    FF75 08         push dword ptr ss:[ebp+8]

7C80B73F    E8 C0290000     call kernel32.7C80E104

7C80B744    85C0            test eax,eax

7C80B746    74 08           je short kernel32.7C80B750

7C80B748    FF70 04         push dword ptr ds:[eax+4]

7C80B74B    E8 7D2D0000     call kernel32.GetModuleHandleW

7C80B750    5D              pop ebp
复制代码解释一下为什么要这么下.GetModuleHandleA这个函数在壳的运行中是至关重要的,调用的次数非常的频繁,而且即便是过了OEP以后,主程序初始化的时候也会调用这个函数,也就是说,我们即便不能到达OEP,也可能到达OEP附近。所以用这个断点来[url=http://www.52wpe.net]外挂[/url]我们找OEP。

断点下好以后,F9运行,注意看反汇编窗口EIP的位置。数次之后,就会断在下面的代码上:00A70447  ^\E9 5929FFFF     jmp 00A62DA5
复制代码这就是ESP定律应该执行到的位置。

然后取消GetModuleHandleA 里面的Int3断点。这点很重要!!!!!!!否则后面在Patch代码修复IAT的时候就会壳的多线程校验检测到。

再走两步就到了这里,这就是OEP,标准的Delphi入口00453D0C    55              push ebp

00453D0D    8BEC            mov ebp,esp

00453D0F    83C4 F0         add esp,-10

00453D12    B8 2C3B4500     mov eax,zp_1_4.00453B2C

00453D17    E8 441FFBFF     call zp_1_4.00405C60

00453D1C    A1 58504500     mov eax,dword ptr ds:[455058]

00453D21    8B00            mov eax,dword ptr ds:[eax]

00453D23    E8 74E3FFFF     call zp_1_4.0045209C

00453D28    8B0D 38514500   mov ecx,dword ptr ds:[455138]            ; zp_1_4.00456BFC

00453D2E    A1 58504500     mov eax,dword ptr ds:[455058]

00453D33    8B00            mov eax,dword ptr ds:[eax]

00453D35    8B15 3C364500   mov edx,dword ptr ds:[45363C]            ; zp_1_4.00453688

00453D3B    E8 74E3FFFF     call zp_1_4.004520B4

00453D40    A1 58504500     mov eax,dword ptr ds:[455058]

00453D45    8B00            mov eax,dword ptr ds:[eax]

00453D47    E8 E8E3FFFF     call zp_1_4.00452134

00453D4C    E8 0B00FBFF     call zp_1_4.00403D5C
复制代码上面是比较中规中矩的方法,下面介绍一种比较取巧的方法。

直接在OD中运行程序。然后到00401000去,分析一下代码。

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-4 01:52 , Processed in 0.055578 second(s), 16 queries .

返回顶部