前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >脱壳->内存断点法脱壳

脱壳->内存断点法脱壳

作者头像
IBinary
发布2020-04-13 11:30:42
1K0
发布2020-04-13 11:30:42
举报
文章被收录于专栏:逆向技术逆向技术

内存断点法,脱壳详解

一丶内存断点方法

1.何为内存断点法,以及原理

内存断点就是在内存上下断点,然后进行下断.进而寻得我们脱壳位置处代码

脱壳和内存断点有啥关系

首先我们要明白一个壳, 常见的壳都是 先保存寄存器 保存OEP等.最后 跳转到OEP 也就是入口点去执行代码

注意,跳转的方式很多种,只要能修改EIP即可.或者RIP. 例如 push + ret方法 jmp方法等

既然明白了会保存我们的寄存器以及恢复我们的寄存器,那么就可以使用 ESP定律来进行脱壳了

但是这里是另一种方法

壳会读取内存,那么我们就在内存上设置读取断点 而后读完之后最后会将数据写入到入口点(也就是Imagebase)所对应的节中,也就是 (Text)节.所以可以在 Text节上下一个内存写入断点

操作方法如下:

1.在 资源节或者 .data节中下内存访问断点(一次性)

2.shift + F9 进行执行代码,此时会断在访问数据的位置

3.继续切换到内存窗口 (Alt+ M) 在Text节上面设置一次性内存写入断点

4.shift + F9 进行执行

注意,在进行操作的时候,请务必讲异常进行忽略,以X64为例子

选型->设置->异常->添加区间

二丶内存断点实战演练

  • 跳转到壳入口点
  • Alt + M 切换到内存窗口,并且在资源节或者数据节上下一个内存访问断点,一次性的
  • shift + F9 无视异常进行执行

会断在访问资源的地方

  • 继续ALT + M 跳转到内存窗口,在.Text节上下内存写入断点一次性,如果是内存访问那么距离特征地址会很远

断下之后查看特征可以看到一个 popad push + Ret组合, 在最下边的RET位置选中,按F4 让代码执行到RET 此时单步一次,RET返回的位置就是OEP了

只有当你F4到RET位置,push 0才会变成一个原始的OEP地址压入堆栈,否则就是如上还是push0

单步即可到达OEP位置

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内存断点法,脱壳详解
  • 一丶内存断点方法
    • 1.何为内存断点法,以及原理
    • 二丶内存断点实战演练
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档