欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

脱壳八法学习记录

来源:giantbranch's blog 作者:佚名 时间:2016-06-28 TAG: 我要投稿

 基本很多程序都是加了壳的,简单来说就是加密了的,程序运行时先运行解密程序,解密完成再跳到程序开始处运行,这就相当于在代码外面加了“保护壳”

脱壳就是一般解密完成后,直接从内存保存到一个文件

方法一 ESP定律

其实这个很多教程也没有说清楚到底是为什么,下面我尝试说一下,核心的一点就是它利用的是堆栈平衡原理,pushad之前和popad之后栈的状态是一样的

首先查下壳

QQ截图20160617133616.png

一开始有个pushad,就是将od右上角的八个寄存器入栈,那么当程序解密完毕,肯定有个对应的popad,将八个寄存器还原

刚载入时如下图,注意栈的状态

QQ截图20160618114047.png

下面这个是执行完popad时候栈的状态,可以看到是一样的,

QQ截图20160618114400.png

f8一下,可以看到寄存器的值都入栈了

QQ截图20160618114132.png

那么popad之前栈的状态跟上图是一样的

QQ截图20160618114438.png

因为popad要访问栈的这8个dword,那么我们只要在其中一个字节,字或双字下个硬件访问断点就行了

QQ截图20160618114306.png

f9运行,跟着f8到遇到返回或jmp,跟着就到达以oep,一般是显示db数据

QQ截图20160618114508.png

当然od有插件,但不好用,就是不成功咯,有时,一般用下面的lordPE,但插件可以用于计算oep的相对虚拟地址

QQ截图20160618115143.png

最后用importREC修复一下导入表,据说是因为在内存中IAT是当前机器API的实际地址,我们要修复导入表的结构才能运行,在其他机器运行

QQ截图20160618115332.png

方法二 单步跟踪

载入后按f8,这个call就弹出记事本了,重新载入后按f7进入这个call

blob.png

有向上跳的jmp就直接运行到它的下一条语句

blob.png

单步看到popad,或者ret,大jmp就注意了,下面就跟我们的esp定律是一样的地方了

blob.png

跟着就ret到了oep,注意要删除分析哦

blob.png

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载