首页
社区
课程
招聘
[原创]PE dump 后实现反编译的通用方法
发表于: 16小时前 799

[原创]PE dump 后实现反编译的通用方法

16小时前
799

恶意代码分析中,经常会出现在内存中释放PE文件的操作。内存中的PE文件,通常被称作展开后的文件,dump下来的内存文件通常是无法被直接反编译的,这篇文章将简述一个通用的dump技巧,使内存中dump下来的PE文件被正常反编译,方便你的静态分析。

Virtual addressRAW addressImagebaseAddressOfEntryPoint

virtual address 字段中的值,代表PE文件在内存中的页长度;RAW address 字段中的值,这代表PE文件在磁盘中的页长度;Imagebase 字段中的值,代表PE文件中的偏移地址从哪里开始计算;AddressOfEntryPoint 字段中的值,代表进程从哪里进入执行代码。

以一个恶意代码为例,进行演示。

首先在动态调试过程中,获取到内存中的PE文件。如下图中:

image-20241224084946525

接下来将内存中的PE文件保存下来,此时还无法正常进行反编译,需要进行一些调整,将所有节区virtual address 字段 的值复制粘贴给 Raw address 字段 。将 rax 寄存器中的值赋值给AddressOfEntryPoint 字段 。本示例修改使用的工具为 CFF Explore

所有涉及的字段,在下图中用红框标记。

image-20241224091127647

image-20241224092931507

image-20241224094909771

image-20241224095002031


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 23
支持
分享
最新回复 (14)
雪    币: 4536
活跃值: (1740)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢楼主的精彩分享。
14小时前
0
雪    币: 1365
活跃值: (2837)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
666
12小时前
0
雪    币: 390
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
12小时前
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
感谢分享
11小时前
0
雪    币: 3438
活跃值: (2376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享
10小时前
0
雪    币: 153
活跃值: (768)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享
10小时前
0
雪    币: 3458
活跃值: (2673)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习一下。一直都觉得会dump的人很酷
10小时前
0
雪    币: 7705
活跃值: (3771)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感谢分享
9小时前
0
雪    币: 11
活跃值: (2016)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
thanks for sharing
7小时前
0
雪    币: 144
活跃值: (183)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
thanks for sharing
6小时前
0
雪    币: 11235
活跃值: (17829)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
实现反编译的通用方法
4小时前
0
雪    币: 13024
活跃值: (9598)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
其实分析多了的话,你就会发现,这个pe在某个时间点就是以静态文件在内存中存在的,不然就没有后面的reload_pe之类的了。这个时间点大部分在:解密后或者解压后。当然在reload之前(废话~)。
4小时前
0
雪    币: 41
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
厉害啊
4小时前
0
雪    币: 525
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
谢谢分享,学习学习。
4小时前
0
游客
登录 | 注册 方可回帖
返回
//