【逆向】【UPX】【ODdump】硬件断点后内存转储程序无法运行成功解决及脱壳步骤

目录

问题如下:

解决:

总结:


问题如下:

脱壳的时候我下了硬件断点:在PUSHAD的下一步查看ESP,OD的左下角goto到esp指向的地址,然后右键下硬件断点。

这样再运行很容易就直接定位到了POPAD,看起来都挺顺利的,很容易找到了OEP的位置。但是内存转储出来的exe打开无效果不运行,在110版本的OD中提示:“has entry point outside the code(as specified in the PE header)”。晚上我和同学讨论了下,他可以正常脱壳,我看到他是直接F8一点点一点点的找,最后找到POPAD的位置,或者CTRL+F直接搜索POPAD然后找到地址,dump。没有下断点,我也用他的电脑试了下,可以。但是我在他的电脑上也设置硬件断点之后,就和我的状况一样了。后来我取消硬件断点,把硬件断点都删除,直接dump,因为OEP的地址一直都是1332。也不行了。

我在这个上面发了求助,里面是我的具体问题:

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1042292&page=1#pid28293988

解决:

解决的帖子:https://zhidao.baidu.com/question/691492835131194084.html

https://www.52pojie.cn/thread-525321-1-1.html

WIN7已经验证可行了,再去我的32位虚拟机看看,顺便给虚拟机都做一次spa(把不用的垃圾都去掉,然后整理一下文件),直接运行程序时出现下面的问题:

解决方法:搜索Microsoft Visual C++ 2010 Redistributable Package ,安装即可。https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=5555

还未解决,参照:解决方法:https://www.cnblogs.com/hrhguanli/p/3886490.html 

然后就开始脱壳了。

我知道的并且可行的对于UPX的脱壳找OEP的几种方法:

1.pushad的下一步,找到esp的值,OD左下角goto过去,下硬件断点。然后再运行,直接定位到了popad那一部分。然后转到oep即可(即找到oep的地址),dump即可。

然后下断点:(跳过去选中第一个字节即可)

2.直接ctrl+f搜索popad直接看到oep的位置

3.利用ollybdg的dump插件,里面有一个找oep的选项(但这个偶尔我的不可行。),点击后运行也直接过去了。

4.手动ctrl+f8追踪,f7进入循环查看下断点,f9跳出继续走。直到看到oep。

 

以下硬件断点为例:

1.载入文件看到如下:

2.F7或者F8单步向下一步:

3.记录下esp的地址,到左下角goto

4.下硬件断点:

 5.F9运行,直接来到了POPAD的下面:

 6.记录下OEP的地址,或者可以f8一路向下,跳过那些小循环,来到OEP

7.内存转储 

8. 不用手动修改EIP了,因为已经跳过去了,注意下面直接勾选修复IAT的选项,虽然好像说UPX不选这个也没事,因为壳比较简单,但选上吧。点击脱壳即可。

 9.验证可否运行:

偶尔可以成功。什么鬼。dump了好几个,1是没有F8到OEP看到地址直接dump的,2是下面选择方式1的,3是正常跳过去不用自己修改eip的。三个有时候某一个可以正常执行。

出现的错误如:

指令引用的内存,该内存不能为read :

是不是我一次性dump的太多了,删掉重新来。

10.不知道为什么,发现对于XP系统选择方式1可以成功,方式二就会出现上面的错误

 如下:

去找一下方式1和方式2的区别:

https://www.pediy.com/kssd/pediy07/pediy7-659-5.htm 

https://max.book118.com/html/2017/0422/101701603.shtm

 

 https://www.docin.com/p-503474373.html

 最后看雪:https://bbs.pediy.com/thread-20165.htm

好吧,我其实有点想弄清楚到底区别在哪,现在我不care了?。不选方式就好了! 

 

总结:

1.尽量使用32位系统,win7系统。不要使用win10。

2.对于我等菜鸟,UPX脱壳无需勾选dump的方式1,2,自增烦恼

=====================

额,我又回来了,真是打脸。不选方式一XP系统还是无法执行出现这个错误:

啊!(╯‵□′)╯︵┻━┻

我去写作业了。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Windows中,UPX脱壳是指通过一系列技术手段将经过UPX压缩壳处理的可执行文件恢复到原始状态。UPX压缩壳是一种常见的软件保护措施,它可以压缩可执行文件的大小并添加一些特定的处理逻辑来保护代码的安全性。UPX脱壳的过程可以通过寻找可疑点(如jmp或者ret指令)、设置访问断点以及单步调试等方法来实现。引用、、 通过分析UPX的文件头,可以找到UPX的头部信息并进行抹去,使得脱壳软件无法正确脱壳。此外,UPX脱壳过程中,我们通常要跳到原始入口点(OEP)以完成程序运行。可以通过多次脱壳操作来感知到OEP的特点。 另一种方法是通过在堆栈上设置访问断点,当程序执行到壳程序即将执行完时,程序会暂停,然后可以通过单步跟踪的方式找到原始OEP。这是因为壳程序内存中还原程序并执行后,会操作堆栈指针为进入之前的堆栈指针,根据堆栈平衡原理,我们可以利用这个原理来定位原始OEP。 综上所述,Windows中的UPX脱壳可以通过抹去UPX的文件头、寻找可疑点、设置访问断点以及单步调试等方法来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [对于UPX脱壳解决](https://blog.csdn.net/qq_54894802/article/details/128516718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值