江湖OneCat 发表于 2019-10-23 18:40

OD脱壳UPX设置硬件断点后转储文件无法运行

问题如下:
脱壳的时候我下了硬件断点:参照逆向工程核心原理这本书,在PUSHAD的下一步查看ESP,OD的左下角goto到esp指向的地址,然后右键下硬件断点。



这样再运行很容易就直接定位到了POPAD,看起来都挺顺利的,很容易找到了OEP的位置。

但是内存转储出来的exe打开无效果不运行,在110版本的OD中提示:“has entry point outside the code(as specified in the PE header)”。110和吾爱班版都一样无法运行,双击exe程序也没效果。

110和吾爱班版都一样无法运行,双击exe程序也没效果。


晚上我和同学讨论了下,他可以正常脱壳,我看到他是直接F8一点点一点点的找,最后找到POPAD的位置,或者CTRL+F直接搜索POPAD然后找到地址,dump。

没有下断点,我也用他的电脑试了下,这样不下断点纯靠找地址直接dump可以。

但是我在他的电脑上也这样设置硬件断点之后,就和我的状况一样了(打开转储的文件运行无果)。后来我取消硬件断点,把硬件断点都删除,直接dump,因为OEP的地址一直都是1332。也不行了。

有点感觉被那个断点污染过之后就不可以了。

请问有人知道这是怎么回事吗?明明看到很多博客都是这么做的,他们看起来都没有问题。

江湖OneCat 发表于 2019-10-24 07:24

这种方法转储的文件也无效。。。

江湖OneCat 发表于 2019-10-24 07:32

这是直接ctrl+f搜索popad然后就看见OEP,直接dump后打开程序的效果···

zero呆 发表于 2019-10-24 11:11

本帖最后由 zero呆 于 2019-10-24 11:15 编辑

确定OEP找对了?如果对了就 修复下IAT试试

wu0o0pj 发表于 2019-10-24 12:00

OEP 应该是 0x401332,但你第一次的脱壳时机不对吧,怎么说也先跑到 0x401332 再 dump
EIP 还在壳段就dump当然有问题

xp 下 dump 和 修复,推荐 LordPE ,ImportREC

江湖OneCat 发表于 2019-10-24 14:03

换了在虚拟机WIN7或者xp就没问题了。。。

江湖OneCat 发表于 2019-10-24 14:52

有人知道OD重建输入表方式1和方式2的区别吗?发现在xp系统方式1可以,方式2不可以运行。

江湖OneCat 发表于 2019-10-24 14:56

江湖OneCat 发表于 2019-10-24 14:59

wu0o0pj 发表于 2019-10-24 12:00
OEP 应该是 0x401332,但你第一次的脱壳时机不对吧,怎么说也先跑到 0x401332 再 dump
EIP 还在壳段就dum ...

这个,OD插件那个页面是有基地址的好像不用是401332。然后试了下,跳不跳过去,只要EIP写对都可以。就是dump出来的文件,在我自己的win64无法执行,同学的可以。然后我换在w7系统可以,xp系统重建输入表方式1可以,方式二不可以。
晕了。

wu0o0pj 发表于 2019-10-24 15:56

江湖OneCat 发表于 2019-10-24 14:59
这个,OD插件那个页面是有基地址的好像不用是401332。然后试了下,跳不跳过去,只要EIP写对都可以。就是d ...

嗯,非老鸟建议还是走到原始OEP再dump,毕竟各个寄存器初始值是很可能影响运行的

dump 后 用 ImportREC 修复 IAT 试试

再不行,看看是不是 开启了 ALSR,把它关了
页: [1]
查看完整版本: OD脱壳UPX设置硬件断点后转储文件无法运行