PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode脱壳手记 [转载]

今天要脱的是PEncrypt 4.0加的壳,是一个记事本程序,这个记事本程序比较奇怪,令我的修复出现了一点点小的波折。

加壳的记事本程序下载地址: [点击浏览该文件:PEncrypt V4.0.rar]

首先PEID查壳,显示:PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode [Overlay],有附加数据。然后用ollydbg载入,设置“调试选项”,在“异常”中,把所所有的勾都去掉,不要忽略异常。然后按shift+F9忽略异常运行,应该是按3次,这个记事本就运行了。

记事本运行后,重新载入。按shift+F9两次,程序会停在0040CCD2处。

0040CCD0    9D              popfd
0040CCD1    90              nop
0040CCD2    4B              dec     ebx
0040CCD3    6F              outs    dx, dword ptr es:[edi]
0040CCD4    6368 69         arpl    word ptr [eax+69], bp
0040CCD7    8B4424 04       mov     eax, dword ptr [esp+4]
0040CCDB    8B00            mov     eax, dword ptr [eax]
0040CCDD    3D 04000080     cmp     eax, 80000004

查看堆栈:

0012FFBC   0012FFE0  指向下一个 SEH 记录的指针
0012FFC0   0040CCD7  SE处理程序
0012FFC4   7C817077  返回到 kernel32.7C817077
0012FFC8   7C809C98  kernel32.MultiByteToWideChar

可以看到“SE处理程序”的值为“0040CCD7“,那么在反汇编代码窗口中按CTRL+G,输入0040CCD7,来到此行代码并按F2下断点。其实也不用按CTRL+G,这行代码就在下面,直接就看到了。

下完断点后,按shift+F9运行,程序中断,然后取消断点,一直向下单步跟踪。最终来到0040CD2D这行代码,这是一个大跳转,直接跳到OEP。最后单步跟踪一步,就来到OEP了。然后dump脱壳即可。

0040CD23    AB              stos    dword ptr es:[edi]
0040CD24  ^ E2 FA           loopd   short 0040CD20
0040CD26    9D              popfd
0040CD27    61              popad
0040CD28    BD CC104000     mov     ebp, 004010CC
0040CD2D  - FFE5            jmp     ebp                              ; PEncrypt.004010CC
0040CD2F    0000            add     byte ptr [eax], al
0040CD31    0000            add     byte ptr [eax], al

修复的问题。

脱壳后程序不能运行,提示“无法找到组件”的错误,而不能正常运行。

使用ImpRec工具修复后,仍然不能正常运行。比较郁闷,用lordPE重建也不能正常运行。

后来想起来了加壳的程序好像有附加数据,于是用Hex workshop打开文件,通过PEID可知,最后一个区段的偏移是C000,大小为1522,那么附加数据就是从D522开始。可用Hex workshop打开后,文件到D522就结束了,所以根本就没有附加数据,所以这个文件映像大小是有误的。

然后打开脱壳后dump出来的问,最后一个区段的起始位置是D000,大小是C00。而来到D000时,很明显这里不是一个区段的起始位置,如下图所示。所以这个文件的区段位置不对,需要修复。


打开lordPE,刚开始用LordPE修复没有成功,是因为在修复选项中,我只选择了“使PE有效”,现在选中“重新排列文件”,排列方式选“标准”即可。保存选项后,再用LordPE修复,这样修复后的文件就有效了,也能正常运行了。

所以dump脱壳后,根本不需要使用ImpRec来修复IAT,只需要用LordPE重排区段的位置即可。

☆版权☆

* 网站名称:obaby@mars
* 网址:https://lang.ma/
* 个性:https://oba.by/
* 本文标题: 《PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode脱壳手记 [转载]》
* 本文链接:https://lang.ma/2009/08/76
* 短链接:https://oba.by/?p=76
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注