脱壳总结

.壳(Pack)也称为“保护器”或“打包器”,是一种可以将目标应用程序加密,并且在使用时无需手动解密的一种版权保护工具
.壳的诞生得益于感染型病毒的出现,事实上,壳与感染型病毒的工作原理几近相同,都是一种可以将自己的“寄生体”“感染”到“宿主”身上的一种技术。
.在软件安全领域中,壳是技术密集度最高的安全技术之一。


.总体而言,比较通用的脱壳技巧有以下几种:
    1. 利用SFX自解压脱壳
    2. popad出口标记脱壳
    3. 单步跟踪脱【万能脱壳】
    4.利用堆栈平衡脱壳
.通用的脱壳机很难应对比较强悍的“猛壳”,想脱“猛壳”还是需要扎实的编程功底、调试功底与逆向功底。

具体步骤:
-----1. 利用SFX脱壳
. SFX是Self-extracting的简写,译为自动解压缩,这是OllyDBG提供的一个比较智能的功能。
. SFX的原理是检测目标程序是否存在压缩特征,是的话OllyDBG就会尝试使用自己的SFX功能将调试员带到程序的真正入口点(OEP)处。
. 利用SFX脱壳的步骤如下:
    A.设置OllyDBG忽略所有异常
    B.在OllyDBG中的SFX选项卡中设置相应选项
    C.清除UDD文件后重载程序,OllyDBG的SFX机制会检测到被调试文件存在自解压模块并提示,选择“否”后OllyDBG会尝试跟踪到被调试文件的OEP。

-----2. 出口标记脱壳
.绝大多数的壳为了保持加壳后的程序堆栈平衡,都会在壳运行前使用pushad或pushfd保存当前所有寄存器的状态,并在壳的Stub代码运行完毕后再使用popad或popfd恢复左右寄存器的状态。
.因为所有的壳在运行完毕后都会开始运行正真的宿主程序,因此找到popad的可能意味着到了软件的壳的结尾处(也就是宿主程序的起始OEP)
.利用出口标记的脱壳步骤如下:
A.   单击鼠标右键依次选择[查找]>[所有命令]
B. 然后输入我们要查找的指令popad/popfd
C. 依次查找可能的跨段跳转,找到OEP

-----3. 单步跟踪脱壳
      .单步跟踪脱壳本质上是一种万能脱壳方式,使用这种方法能脱什么壳取决于操作者的技术水平 ,所谓的单步跟踪就是动态调试。


----4. 利用堆栈平衡脱壳
.壳如果想正常运行在宿主程序上就必须要保证堆栈平衡,因此堆栈在壳开始运行时是什么状态,在其运行完毕后,必须要将堆栈还原到这种初始状态,以便继续执行宿主程序。
.由于利用这个特征进行脱壳的主要参考系统就是ESP寄存器,因此这种脱壳方法又叫“ESP定律脱壳”。
.利用堆栈平衡脱壳的操作步骤:
   A  先按快捷键[F8]单步一次
   B   在ESP所指的位置下硬件访问断点
   C 运行程序后触发断点,经过简单分析即可找到OEP

脱壳总结:
. 认识各种程序的OEP,是基础中的基础
. 会使用调试器及各种技巧,是必要的基础
. 所有的脱壳方法都可以交叉、交替使用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值