0xNullll/PEDump

GitHub: 0xNullll/PEDump

一款跨平台的 PE 文件静态检查与分析工具,支持头部解析、数据目录查看、字符串提取、哈希计算与文件比较等功能。

Stars: 1 | Forks: 1

# PEDump 一款使用 C 语言编写的跨平台**可移植执行文件 (PE)** 检查与分析工具。 `PEDump` 支持在 Linux 和 Windows 上对 Windows PE 文件进行静态分析,并计划支持 macOS。 ## 功能 - **全面的 PE 分析** – 完整解析头部、节区和数据目录;**CLR 检查仅限于头部** - **跨平台支持** – 可在 Windows、Linux 上运行;计划支持 macOS - **健壮的解析能力** – 能够处理格式错误或非标准的 PE 文件 - **流式输出** – 支持增量或管道输出,便于实时分析 - **定向提取** – 提取特定的节区、导入表、导出表或任意范围 - **字符串提取** – 从 PE 文件中提取 ASCII 和 UTF-16LE 字符串 - **COFF 符号与字符串表** – 访问通常不对外公开的 PE 符号和字符串表 - **哈希计算** – 计算文件、节区或范围的 MD5、SHA1 和 SHA2 哈希值 - **比较功能** – 比较同一文件或两个不同文件之间的 PE 区域 - **输出格式化** – 灵活的格式选择:十六进制 (hex)、十进制 (dec)、二进制、表格 ## 构建要求 - 兼容 C11 的编译器 (GCC、Clang 或 MSVC) - CMake ≥ 3.20 - Windows 或 POSIX 环境 ## 构建说明 ``` mkdir build cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build ``` 生成的二进制文件将位于 **build/bin/** 目录中: - **Windows**: `PEDump.exe` - **Linux**: `PEDump` ## 使用说明 ``` PEDump [options] file [file2] ``` ## 通用 | 命令 | 描述 | |--------|-------------| | `-h`, `--help` | 显示帮助信息 | ## 头部与 PE 信息 | 命令 | 描述 | |--------|-------------| | `-dh`, `--dos-header` | 打印 DOS 头 | | `-fh`, `--file-header` | 打印 File 头 | | `-oh`, `--optional-header` | 打印 Optional 头 | | `-nth`, `--nt-headers` | 打印 NT 头 | | `-sh`, `--section-headers` | 打印节区头 | ## 数据目录 | 命令 | 描述 | |--------|-------------| | `-e`, `--exports` | 打印导出目录 | | `-i`, `--imports` | 打印导入目录 | | `-r`, `--resources` | 打印资源目录 | | `-ex`, `--exception` | 打印异常目录 | | `-sec`, `--security` | 打印安全目录 | | `-br`, `--basereloc` | 打印基址重定位 | | `-d`, `--debug` | 打印调试目录 | | `-tls`, `--tls` | 打印 TLS 目录 | | `-lc`, `--load-config` | 打印加载配置目录 | | `-bi`, `--bound-import` | 打印绑定导入 | | `-iat`, `--iat` | 打印导入地址表 | | `-di`, `--delay-import` | 打印延迟导入 | | `-ch`, `--clr-header` | 打印 CLR 头 | | `-dd`, `--data-directories` | 打印所有数据目录 | ## 杂项 | 命令 | 描述 | |--------|-------------| | `-rh`, `--rich-header` | 打印 Rich 头 | | `-vi`, `--version-info` | 打印版本信息 | | `-sym`, `--symbol-table` | 打印 COFF 符号表 | | `-st`, `--string-table` | 打印 COFF 字符串表 | | `-o`, `--overlay` | 打印附加数据 | | `-ov`, `--overview` | 打印文件高级概述 | | `-a`, `--all` | 打印所有可用信息 | ## 输出格式化 | 命令 | 描述 | |--------|-------------| | `-v2f`, `--va2file ` | 将虚拟地址转换为文件偏移 | | `-f`, `--format ` | 输出格式及可选范围 | | `-tf`, `--temp-format ` | 临时覆盖输出格式 | ## 字符串 | 命令 | 描述 | |--------|-------------| | `-str`, `--strings [rgex:]` | 提取 ASCII 和 UTF-16LE 字符串 (最小长度:5) | ## 提取 | 命令 | 描述 | |--------|-------------| | `-x`, `--extract ` | 提取节区、导入表、导出表或区域 | **目标** - `section:NAME | #IDX | rva/VAL | fo/VAL` - `export:NAME | #ORD | rva/VAL | FWD | LIB` - `import:NAME | #ORD | @HNT | LIB | LIB/NAME` **地址格式:** `HEX`, `0xHEX`, `HEXh` ## 哈希计算 | 命令 | 描述 | |--------|-------------| | `-H`, `--hash ` | 计算文件或区域的哈希值 (MD5 / SHA 系列) | 支持的算法: `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`, `sha512_224`, `sha512_256` ## 比较功能 | 命令 | 描述 | |--------|-------------| | `-cc`, `--compare-targets ::` | 比较两个目标之间的区域 | ## 使用示例 ``` PEDump -ov test.exe PEDump -i test.exe PEDump -H section:.text@sha256 test.exe ``` ## 备注与状态 - 所有命令均已在 Windows 上实现并经过全面测试。 - Linux 支持已提供,但尚未完全验证;macOS 支持已在计划中并已部分实现。 - 这是我的第一个 C 语言项目;虽然功能完备,但它反映了一个学习过程,可能并未做到完美无瑕。 ## 许可证 基于 **MIT License** 发布。完整文本请参阅 [LICENSE](LICENSE)。
标签:Bash脚本, Linux安全, PE文件分析, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 客户端加密, 批量测试, 跨平台工具, 逆向工程, 静态分析