前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

加壳/脱壳知识笔记

qiguaw 2024-12-05 15:25:26 资源文章 14 ℃ 0 评论

一、加壳

加壳定义:

利用特殊的算法可执行程序资源进行压缩,压缩后的程序可直接运行。

加壳的目的:

攻击者:制作免杀木马,攻击目标网络或主机。

防御者:防止入口点(OEP)被破解暴漏,导致程序被控或被篡改。

加壳作用

攻击者:成功入侵控制目标主机或盗取目的信息。

防御者:防止网络攻击、防止信息泄露。

加壳原理:

在二进制的程序中植入一段代码,在运行的时候先取得程序的控制权,然后再把控制权交还给原始代码,达到隐藏OEP的目的。

加壳方式/工具:

压缩加壳:注重减小软件体积大小,加密保护不是其重点。常用工具有UPX、北斗程序压缩、ASPack等。

加密加壳:重点加密保护。常用工具有PE-Armor、ASProtect、ACProtect、Armadillo等。

伪装壳:扰乱检测。常用工具有Hide PE等。

多层壳:重点加密保护。常用工具有Aspack、Pecompact、UPX等,资源释放工具有FreeRes等。

(多层壳说明:多层壳需要加壳后释放文件在加壳在释放在加壳,因此需要资源释放工具)

二、脱壳

脱壳定义:即破除压缩后程序无法编辑的限制。

脱壳目的:用于获取产品设计逻辑或杀毒检测。

脱壳步骤:

1、查壳:用于分析软件有没有加壳,加壳是所使用的哪种壳。常用工具(PEID、Ollydbg、)。详细操作过程可关注我的后期文章介绍:《破解基础-你到底有没有》。

2、寻找OEP:OEP是程序加壳前真正的入口点,外壳初始化的现场环境(各寄存器值)和原程序的现场环境是相同的,加壳程序初始化时保存各寄存器的值,外壳执行完毕,会恢复各寄存器内容。

3、抓取内存映像文件(Dump):完成外壳程序解压还原后,在内存中找到运行的目标PE进程数据,从内存中抓取出来,然后在用文件的形式保存下来。保存下来的文件可能不能正常运行,有可能是壳对IAT进行了加密。

抓取内存映像文件详细介绍可关注我的后期文章介绍:浅谈脱壳中的Dump技术

4、输入表重建(修改IAT):一些加密壳为了防止输入表被还原,会在IAT里填充一些扰乱解析的地址(例如:壳中用来HOOK-API的外壳代码地址),为了获得没有加密的IAT,一般可跟踪加壳程序对IAT处理过程,修改相关指令,阻止外壳加密IAT。

输入表重建详细介绍可关注我的后期文章介绍:重建输入表

IAT的全称是Import Address Table。

IAT表是执行程序或者dll为了实现动态加载和重定位函数地址,用到的一个导入函数地址表。这里面记录了每个导入函数的名字和所在的

dll名称,在pe加载的时候系统会加载这些dll到用户的地址空间然后把函数地址覆盖这个表里的函数地址,然后重构所有用到这个表的代

码,让其调用直接指向实际函数地址(PE是否覆盖不确定,驱动会这么做),PE的IAT表会留在内存,驱动的就丢弃了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表