marshalsimons/Simple-PE-Parser
GitHub: marshalsimons/Simple-PE-Parser
一个用纯 C 编写的简易 PE 文件解析器,用于检测 Windows 可执行文件并解析其基本信息,即使文件被隐藏在其它载体中。
Stars: 0 | Forks: 0
## Simple PE Parser:Windows 可执行文件检测
Simple PE Parser 是我为 NFA-732 恶意软件分析课程创建的一个 C 程序,用于检测 Windows 可执行文件,即使它们隐藏在另一个文件中。作为个人挑战,我编写这个程序时没有使用任何预制的 Windows 库,而是通过指针和偏移量来导航文件结构以识别签名。
### 工作原理
程序首先将用户输入的文件加载到内存中。然后它从文件开头开始读取,搜索 `MZ`(4D 5A)头。由于这些字节可能是偶然出现的,程序会利用 PE 文件格式来定位文件签名指针,并检查预期的 `PE` 签名(50 45)。如果两者都找到,则该文件被识别为有效的 Windows 可执行文件。
一旦检测到 PE 文件,程序会打印 DOS stub 消息并收集其他文件信息(实验室的具体要求)。它还会检查格式,识别是 PE32 还是 PE32+,以提取正确的 image base。如果文件是 DLL,它会列出函数名称及其总数。
程序还会输出 PE 文件中每个节(section)的大小和偏移信息。在 PE 文件隐藏在其他文件中的情况下,节地址可能与预期值不匹配,因为它被确定为相对于文件 MZ 头的偏移量(该头可能不在 `0x00` 位置)。
### 输出
#### 恶意 PE 文件(禁用节转储)
这是恶意 PE 文件的输出,禁用了节转储以便更清晰地查看。

#### 良性 DLL 及函数数据
此输出显示了一个良性 DLL,列出了函数名称及其总数。

#### 隐藏在另一个文件中的恶意 PE 文件
这是一个隐藏在另一个文件中的恶意 PE 文件,展示了程序如何解析文件并动态调整偏移量。

标签:DAST, DLL函数解析, DOS stub, MZ头, NFA-732, PE32, PE32+, PE头, PE文件隐藏检测, PE解析器, Windows可执行文件检测, 二进制分析, 云安全运维, 云资产清单, 客户端加密, 恶意软件分析, 恶意软件检测工具, 文件格式解析, 脱壳分析, 节区分析, 逆向工程, 镜像基址