PE怎么扫内存 扫描内存的PE技巧

PE怎么扫内存 扫描内存的PE技巧

PE如何扫描内存?

1、PE概述

PE(Portable Executable)是Windows操作系统下的可执行文件格式,它由Windows操作系统的PE loader负责加载执行。PE文件表头包含文件信息、机器信息、几个段的信息等,因此PE文件被广泛应用于Windows系统开发及反弹壳的加固等领域。

2、内存扫描的基本流程

内存扫描一般可以分为以下几个步骤:

第一步:确定扫描的内存范围

第二步:构建扫描规则

第三步:遍历内存进行扫描

3、内存扫描的难点

内存扫描在很多情况下被用于检测恶意软件,因此需要克服一些难点,比如恶意软件的自我保护、进程隐藏、加壳等。为此,在进行内存扫描时,通常需要绕过这些障碍。

下面我们分别从以下几个方面介绍PE如何进行内存扫描。

4、基于PE头信息的内存扫描

在进行内存扫描时,可以先定位到程序执行时加载到内存中的PE头信息位置。PE头信息一般存储在进程的映像基址(image base)的位置上,PE头信息中保存了程序的一些基本信息,如程序入口点位置,程序代码在内存中的位置等。通常,PE头信息可以通过PIMAGE_NT_HEADERS结构体获取。获取PE头信息后,需要根据内存中的程序地址重新计算RVA(相对虚拟地址)。

接下来,可以根据PE头信息来遍历模块的Sections,获取模块代码的对应Section的首地址和大小,然后对这个区间进行扫描。

此方法可以绕过加壳壳的保护,但需要注意的是,这种方式只能获取到已被加载的程序信息,无法获取隐蔽的进程信息。

5、基于静态扫描的内存扫描

静态扫描通常是指对已知的程序进行扫描,并通过已知的签名或固定的特征码来判断扫描结果。一般来说,静态扫描可以利用PE工具,比如IDA或OD,或者在代码中嵌入Signature Scanner来实现。

这种基于静态扫描的内存扫描通常可以检测到已知的病毒、木马等恶意软件,但对于未知的变种或者具有进程保护的恶意软件,静态扫描则比较容易失效。

总之,进行内存扫描需要充分了解目标程序的结构及内存布局,针对不同的场景应采用不同的扫描方式。通过PE头信息的扫描一般可以定位到程序代码的区间,而静态扫描则可以利用已知的签名或固定的特征码来确定扫描结果。