第26课 asprotect脱壳系列
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第26课asprotect脱壳系列
[例 1]chap707 asprotect0.94b加壳
用脱壳最基本的方法――esp硬件断点法很快来到这里
push eax eax=442B98
retn
由retn返回即来到入口点oep,oep等于442B98。
用ollydump插件dump转储程序,注意“重建输入表”选项不要打对勾,因为asprotect这个壳比较复杂,我们需要用import reconstructor重建输入表。
注意:oep输入42b98,点IAT AutoSearch按钮;然后,点Get Imports按钮,
再点右上方的show invalid按钮。
如图:
231个指针没有认出来,不要惊慌,莫要害怕。
如图,右键选取1级修复。
修复后结果如下:
接着,show invalid,选取2级、3级修复,可是很郁闷,这一个还是没有解决掉,还是1个。
关于asprotect的插件还很多,我们逐个试吧。
asprotect#1无效果,asprotect#2亦无效。
所有的均无效。
于是,只能猜函数了:
如上图:这之间的出名的函数不多,我们最容易想到的就是跟壳密切相关的一个著名函数GetProcAddress,双击指针,如下图,在弹出的窗口中选取GetProcAddress,点ok即可
至此,全部指针修复成功。
点Fix Dump按钮,选中刚才dump的文件即可。
脱壳成功!
[例 2]unpackme asprotect1.23RC1加壳
Olly载入目标程序,“调试选项”中,忽略内存异常打上勾,其余全部不打勾。
如图:F9运行,出现异常,shift+F9 16次后程序运行。
故重新载入程序,F9运行,出现异常,shift+F9 16-1=15次后来到这里。
00E22CD1 3100 xor dword ptr ds:[eax],eax 00E22CD3 64:8F05 00000000 pop dword ptr fs:[0]
00E22CDA 58 pop eax
00E22CDB 833D 7C6DE200 00 cmp dword ptr ds:[E26D7C],0 00E22CE2 74 14 je short 00E22CF8
00E22CE4 6A 0C push 0C
00E22CE6 B9 7C6DE200 mov ecx,0E26D7C
00E22CEB 8D45 F8 lea eax,dword ptr ss:[ebp-8] 00E22CEE BA 04000000 mov edx,4
00E22CF3 E8 54E1FFFF call 00E20E4C
00E22CF8 FF75 FC push dword ptr ss:[ebp-4]
00E22CFB FF75 F8 push dword ptr ss:[ebp-8]
00E22CFE 8B45 F4 mov eax,dword ptr ss:[ebp-C] 00E22D01 8338 00 cmp dword ptr ds:[eax],0
00E22D04 74 02 je short 00E22D08
00E22D06 FF30 push dword ptr ds:[eax]
00E22D08 FF75 F0 push dword ptr ss:[ebp-10] 00E22D0B FF75 EC push dword ptr ss:[ebp-14] 00E22D0E C3 retn
以上红色所示的都是标志性的语句。
这里就离入口点oep不远了,在E22D0E行下断,如图:
Shift+F9运行,被拦,取消断点,点一下F8,来到下面:
我们该复习以前学过的方法了。
(1)内存断点法:
察看内存
对code段设置访问中断
F9运行,到站!
显然,可以看出,没有偷窃字节(stolen byte)。
入口点的oep=4271B0。
用ollydump插件dump转储程序,注意“重建输入表”选项不要打对勾,因为asprotect这个壳比较复杂,我们需要用import reconstructor重建输入表。
下面,用import reconstructor重建输入表。
由于例1讲得比较详细,这里就大概说说了。
304个无效指针。
右键选取1级修复。
还剩7个无效指针。
用下图所示Asprotect1.22插件可以全部修复
如图:
Fix Dump即可。