逆向-第六次实验-加壳分析
提前说一下:ql太菜啦
还有请不要照抄,保持开源精神
使用UPX和ZProtect对exe文件加壳,然后使用PE文件解析器读取
https://down.52pojie.cn/Tools/Packers/
(ZProtect解压两次)
使用UPX加壳
win+r进cmd 然后cd到文件夹路径对exe加壳,可以把文件拖到这个文件夹里,这样不用填绝对路径
cd进UPX的文件夹再运行upx!!!!!!!!!!
使用ZProtect加壳
如图即可
PE分析
最后会有三个程序
PE分析
可以使用文本分析工具
[DOS_HEADER]
zp加密壳中的e_lfane变化
在正常的PE文件中,e_lfanew的值通常为0x80或其附近。加壳工具在处理PE文件时,会对e_lfanew的值进行不同程度的修改。
压缩壳的目的是减小PE文件体积,对PE结构的修改较小。为保证文件继续正常工作,压缩壳不会随意修改e_lfanew的值。
加密壳在重组PE结构时,会修复所有指向新结构字段的指针,这时e_lfanew的值就有较大变化。加密壳可能会把e_lfanew的值修改为一个看似随机的地址,目的是防止恢复原结构
[FILE_HEADER]:
NumberofSections不一致
在PE文件中,NumberOfSections表示文件中节表中的节数。加壳工具会解压和重组原始文件,在处理过程中可能会减小节数,这会导致NumberOfSections减小
[option_HEADER]
1.压缩壳sizeofcode变化,加密壳不变:压缩壳的主要目的是压缩PE文件,减小体积。为达此目的,压缩壳会直接对.text节中的原始代码进行压缩,然后用压缩后的代码替换原代码。加密壳的目的是加密和隐藏PE文件结构与代码,防止逆向分析。为此,加密壳不会直接修改.text节中的原始代码,而是对整个PE结构进行重组,使用自定义格式加密后再重新构建。
UPX壳在处理文件时,会新增名为UPX0和UPX1的节,用于存储压缩后的代码和数据。这也是判断UPX壳的典型特征之一。
差异分析
1. UPX
UPX的加壳逻辑主要分三步:
1) 解压可执行文件并提取硬件无关的二进制代码
2) 使用LZMA算法压缩提取的二进制代码
3) 修复可执行文件结构,将压缩后的代码重新加入文件
UPX加壳后的文件在PE解析时的主要特征是:
1) 文件体积显著减小, typicall在30-70%之间
2) PE头各字段基本未变,如Magic、TimeDateStamp等
3) 节表未变,各节Characteristics也未变,但节内容被压缩代码替换
4) 除新增UPX0、UPX1节外,其它节基本未变
5) 文件Hash值发生变化,但与原文件存在一定对应关系
2. ZProtect
ZProtect的加壳过程更为复杂:
1) 提取可执行文件中的代码、数据、资源等并解压缩
2) 对代码进行ita混淆和控制流扰乱加固,插入虚假基本块
3) 使用自定义压缩算法(非LZMA)压缩各节内容
4) 重建PE结构,生成新的节布局并填充各结构字段
5) 修补IAT、 Relocation等使文件保持可执行
ZProtect加壳后的文件PE解析特征是:
1) 文件体积不会减小明显,基本保持在10%左右
2) PE头各字段被修改,如Magic修改为“ZPCK”
3) 节表也被修改,节数和各节Characteristics均被修改
4) 除新增ZPR0、ZPR2节,绝大多数节被修改或消失
5) 文件Hash值完全不同,与原文件无对应关系
6) 文件结构复杂,各字段相互不匹配,难以完全解析
本文来自博客园,作者:逆世混沌,转载请注明原文链接:https://www.cnblogs.com/nish1hundun/p/17419043.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步