人间何所以,观风与月|

逆世混沌

园龄:3年2个月粉丝:6关注:5

逆向-第六次实验-加壳分析

提前说一下:ql太菜啦

 还有请不要照抄,保持开源精神

使用UPX和ZProtect对exe文件加壳,然后使用PE文件解析器读取

https://down.52pojie.cn/Tools/Packers/

(ZProtect解压两次)

使用UPX加壳

win+r进cmd 然后cd到文件夹路径对exe加壳,可以把文件拖到这个文件夹里,这样不用填绝对路径

cd进UPX的文件夹再运行upx!!!!!!!!!!

 

 

 使用ZProtect加壳

如图即可

 

PE分析

最后会有三个程序

 

PE分析

 

可以使用文本分析工具

在线文本比对工具 | 菜鸟工具 (runoob.com)

[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结构进行重组,使用自定义格式加密后再重新构建。

PE头:

 UPX壳在处理文件时,会新增名为UPX0和UPX1的节,用于存储压缩后的代码和数据。这也是判断UPX壳的典型特征之一。

加密壳在重组PE结构时,会使用各种自定义的节名称来填充节表,名称内容基本无规律。有的加密壳还会使用类似但不完全相同的名称来伪装标准节,如.textbss即为.text和.bss的组合,目的是为了隐藏修改和掩人耳目。
 
地址出现变化:

 

 

差异分析

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) 文件结构复杂,各字段相互不匹配,难以完全解析

posted @   逆世混沌  阅读(241)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 狂迪 卢广仲
狂迪 - 卢广仲
00:00 / 00:00
An audio error has occurred.

作词 : 卢广仲/討海人/黄少雍

作曲 : 卢广仲

在我眼前消失不见

今天的什么都不对

楼下的店听见熟悉的音乐

谁离开我谁爱着我

剩下一半的小火锅

别乱牵拖直到你出现

满天星光月亮出来了

神魂颠倒这是真的吗

管不住我自己的步伐

戒不掉你致命的魔法

谁教我蜿蜒的弹跳

谁教我崎岖的舞蹈

我爱你你知不知道

OH Dónde estás Bongria

想要见面有点抱歉

下午才跟你晚上约

请放轻松看着公园的落叶

摇摇晃晃我的形状

一边海洋一边天堂

你拉着我这一步叫做永远

满天星光月亮出来了

神魂颠倒这是真的吗

管不住我自己的步伐

戒不掉你致命的魔法

谁教我蜿蜒的弹跳

谁教我崎岖的舞蹈

我爱你你知不知道

OH Dónde estás Bongria

我丢掉太多的不必要

朝着有你的方向跑

跑到你眼前逗你笑

听到电影里的配乐响起

全场只为了等你说一句

说欸你要不要跟我一起

去教堂

Yes I do希望你也一样

先说好一起永保安康

每一天蜿蜒的弹跳

每一天崎岖的舞蹈

我爱你你知不知道 OH

如果爱我让我看见你

的脚