-
-
[旧帖]
[求助]PE文件格式-WinUpackSC.exe的输入表位置问题
0.00雪花
-
发表于:
2012-3-26 11:10
1448
-
[旧帖] [求助]PE文件格式-WinUpackSC.exe的输入表位置问题
0.00雪花
【求助】PE文件格式-WinUpackSC.exe的输入表位置问题
本人初学脱壳,最近找到一款常用压缩加壳软件WinUpack,它由Dwing开发,具有不错的压缩效果。
下载了它的简中版分析一下后,我发现:
1) WinUpackSC.exe文件由自身加过了壳。
2) WinUpackSC.exe文件在XP Professional SP3下可以正常运行。
3) 加壳后的文件折叠了DOS Stub,将PE Signature的文件内偏移提前到0x10,
4) 文件0x02处是字串kernel32.dll,很明显是Import Discriptors的Name项指向的内容。
5) 文件SizeofOptionalHeader明显比实际需要的大,即实际的可选头与首区块间有冗余。
6) 文件第一和第三区块映射到不同的内存空间,但它们使用相同的文件偏移和大小
由于修改了文件头,普通OD甚至不能正确载入;只有修改过的OllyICE才可以。
我在使用LordPE和PEiD两种工具分别打开此文件时,发现显示该文件的输入表信息不相符合:
这是LordPE显示的结果:
Header
Dir Table
Section Table
Import Table!
没错,显示有三项,全是Error
再看PEiD的结果:
文件头和目录表
输入表!
只有一项,Kernel32.dll
LordPE与PEiD显示Import Table的RVA均为1E1EEh,Size也都是14h
文件第三个区块VOffset=1E000h,VSize=1000h
ROffset=10h,RSize=1F0h
于是Import Descriptors数组在文件中的开始位置就是1E1EE-1E000+10=1FEh
对比16进制编辑器后发现LordPE显示的正是此处的值,由于Import Descriptors数组以一个全零的成员结束。于是LordPE显示了三项Error。
同样不难发现PEiD显示的Import Descriptors是文件1EEh处的数据
文件是合法的可执行的PE镜像,显然PEiD显示的结果更靠谱
我的问题是为什么Import Descriptors数组是在文件1EEh处而不是1FEh?
我使用的RVA转ROffset方法有错误么?
这是我自己写的工具的显示结果:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课