2021-06-14

esp定律脱壳

————————————纯属个人理解,如有不对求大佬指正。

看了好多关于esp定律脱壳的文章,都没看懂,o(≧口≦)o,可能是本人太笨了吧。所以就来浅谈一下自己对于esp脱壳的理解。

个人对于esp脱壳的理解是先把壳跑完,此时的oep就是真正的程序入口。然后再将源程序通过工具dump出来为一个exe文件,再进行一些修复操作,就脱壳完毕了。

接下来是实战操作 ┭┮﹏┭┮ ,我直接通过buuctf里的新年快乐题目来操作吧。

esp脱壳

esp定律脱壳

————————————纯属个人理解,如有不对求大佬指正。

看了好多关于esp定律脱壳的文章,都没看懂,o(≧口≦)o,可能是本人太笨了吧。所以就来浅谈一下自己对于esp脱壳的理解。

个人对于esp脱壳的理解是先把壳跑完,此时的oep就是真正的程序入口。然后再将源程序通过工具dump出来为一个exe文件,再进行一些修复操作,就脱壳完毕了。

接下来是实战操作 ┭┮﹏┭┮ ,我直接通过buuctf里的新年快乐题目来操作吧。

查壳

首先拖入ide中,我们会发现只有两个函数,是不是很可疑,

没脱壳拖入ida

所以我们直接将它拖入Exeinfope中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fE4JDSgl-1623664962731)(C:\blog\source\images\esp脱壳\im在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
age-20210614154629368.png)]

可以看到该exe文件里有一个UPX壳,那么我们就开始脱壳吧。

esp脱壳

esp定律脱壳(个人理解):
在外壳代码中有一个pushad的指令,该指令会将所有的寄存器的值都压入栈中也就是说在pushad指令之后esp的值就是指向外壳的代码段了,等之后运行完外壳程序,我们只要找到OEP就可以了

关于esp定律如果有不懂的话推荐看一下这个文章,或者百度。反正都比我讲的好多了。 o( ̄ヘ ̄o#)

拖入od

将exe拖入XP2dbg开始分析,首先找到pushad,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FhVoESCp-1623664962734)(C:\blog\source\images\esp脱壳\image-20210614155437315.png)]

双击进入,将eip指向这里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xn7oiZYK-1623664962736)(C:\blog\source\images\esp脱壳\image-20210614155556333.png)]

然后f8单步运行,此时我们可以看到esp的变化,右键esp,转到内存窗口设置断点

设置内存断点

设断点

运行,关于这两步操作我来做一下解释,因为pushad以后esp指向的是外壳的代码段,所以我们将断点设置在此处,然后运行到此处以后,就可以找到我们的程序入口oep了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sk7ZuHjU-1623664962739)(C:\blog\source\images\esp脱壳\image-20210614163413468.png)]

此时,程序停下来以后,往上看我们可以看到popad,该指令刚好与pushad对应,可以将内存器里的值进行还原。找到下面jmp指令要跳转的位置就是我们的程序的入口oep。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2N6Ugj3w-1623664962741)(C:\blog\source\images\esp脱壳\image-20210614170558703.png)]

oep已找到,接下来开始dump

dump操作

(这里忘截图了,直接挂大佬的操作图了)在这里插入图片描述

操作如下:在这里插入图片描述

在这里插入图片描述

然后再fixdump一下,会弹下图,如果未弹出,可以先perebuild(具体操作与fixdump相同)然后再fixdump(具体原理还在挖掘中)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

脱壳完成!

另外鸣谢大佬,挂上大佬文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值