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文件分析, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 客户端加密, 批量测试, 跨平台工具, 逆向工程, 静态分析