脱壳->内存断点法脱壳
内存断点法,脱壳详解
一丶内存断点方法
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位置
三丶OEP位置脱壳
关于脱壳已经讲过了,请查看如下文章
坚持两字,简单,轻便,但是真正的执行起来确实需要很长很长时间.当你把坚持两字当做你要走的路,那么你总会成功. 想学习,有问题请加群.群号:725864912(收费)群名称: 逆向学习小分队 群里有大量学习资源. 以及定期直播答疑.有一个良好的学习氛围. 涉及到外挂反外挂病毒 司法取证加解密 驱动过保护 VT 等技术,期待你的进入。
详情请点击链接查看置顶博客 https://www.cnblogs.com/iBinary/p/7572603.html
本文来自博客园,作者:iBinary,未经允许禁止转载 转载前可联系本人.对于爬虫人员来说如果发现保留起诉权力.https://www.cnblogs.com/iBinary/p/12679527.html
欢迎大家关注我的微信公众号.不定期的更新文章.更新技术. 关注公众号后请大家养成 不白嫖的习惯.欢迎大家赞赏. 也希望在看完公众号文章之后 不忘 点击 收藏 转发 以及点击在看功能. QQ群: