首页 > 其他 > 详细

01 壳原理

时间:2020-12-07 14:45:28      阅读:29      评论:0      收藏:0      [点我收藏+]

壳的分类:

1. 压缩壳:减小PE体积

2. 加密壳:对抗逆向分析

 

压缩壳加上对抗手段,如反调试、代码膨胀、代码混淆、IAT混淆等,就成了加密壳。

 

壳需要有一段代码,把原PE代码解压出来,但是解压过程中有可能覆盖了解压代码,解决方法:

使用无文件映射的节,类似于汇编中的.data?段。壳把解压后的数据放到.data?段中,这样磁盘上不占用对应的空间。

那么.data?段大小应该多大才够用呢?原PE程序的SizeOfImage-SizeOfHeaders就够用了。

 

一般来说如果PE被压缩了,都会有一个比较大的无文件映射的节,往往比其他节都要大。

 

如果文件中相同的数据越多,压缩后能达到的压缩率就越高。

 

脱壳步骤:

1. 查壳:PEIDexeinfo,查完后可以搜索相关信息

2. 调试运行,停在OEP处。

2.1 OEP识别:

靠经验,可以安装多个开发环境,编译出程序观察入口特征。也可以通过程序外观猜测 是那种IDE编译的。

2.2 OEP定位:

ESP定律

API断点:搜索入口点会调用的函数,例如VC6GetVersion

另外长跳也很可疑,例如从一个节跳到另一个节,基本是jmp OEP的操作

如果都找不到,就单步跟踪,跳过循环,一般只向下跳转,因为向上是循环。如果有对抗,跑飞的地方一般都有反调试,该nopnop

 

1. Dump

2. 修复导入表等,有些dump工具dump出的程序,需要关闭随机基址才能运行

01 壳原理

原文:https://www.cnblogs.com/Nutshelln/p/14096626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!