基础脱壳教程11:附加数据的处理方法

常规脱壳

PEiD 查壳发现后面有个 [Overlay], 就是附加数据

首先 OD 载入, 右键查找 > 命令序列, 输入 popad, popfd, 注意顺序, 栈是先进后出, 后进先出

下断点运行, 取消断点, 单步来到 OEP

脱壳后报错无法运行 : Invalid data in the file !

PEiD查壳发现无 [Overlay]

这就说明存在附加数据

工具:overlay最终版 //有可能会报毒, 但没关系
WIN HEX或HEX WORKSHOP //手动处理附加工具

我们手动处理附加数据

ximo 用的 HEX workshop, 我比较习惯 winHex, 不过这两个软件操作都是类似的

首先把脱壳的源文件用 HEX workshop 打开

然后把数据拉到最后, 嗯, 都是附加数据

然后向上翻, 翻到第一次出现全部为 0 的时候

00008C00这里

00008C00这里开始复制, 按住 shift, 然后拉到最后, 然后右键复制

然后打开脱壳后的那个程序

同样拉到最后, 然后把附加数据右键粘贴上去

另存为, 即可运行, PEiD查壳发现已经带上 [Overlay] 附加数据, 可以运行

再教一种计算的方法

用 LordPE 打开需要脱壳的源程序

PE编辑器 查一下 区段

我们找最后一个区段

我们这个只有两个区段, 其他的可能有更多区段, 我们只用找最后一个区段

我们找 ROffsetRSize, 即实际偏移量和实际大小这两个值, V开头的是虚拟的我们不用管

我们算实际的这两个值, 把这两个值相加 :
8800+400=8c00 //注意是十六进制

载入 HEX workshop, 右键 转到 > 偏移, 或者直接 ctrl+G, 输入结果 8c00, 记住选择十六进制, 同样到达刚才我们找的那个位置

剩下步骤同上.

我们看见脱壳后的程序有好多空数据, 最好不要覆盖它们, 我们在后面加上附加数据, 因为这些空数据也有用.

当然也可以直接用 overlay 工具处理附加数据.

附上另外两篇博客 :

逆向破解——处理附加数据

逆向脱壳附加数据处理

附上大神的两篇文章, 作者是 Lenus

浅谈脱壳中的附加数据问题(overlay)

PE文件中区段的详细分析