Guilherme-alexander/PEParser
GitHub: Guilherme-alexander/PEParser
一个用 C 语言开发的 Windows PE 文件解析器,用于分析和提取可执行文件的结构信息、导入导出表、编译器特征及节区熵值。
Stars: 0 | Forks: 0
# 🔍 PEParser - Windows Portable Executable 分析器
[](https://github.com/yourusername/PEParser)
[](https://www.microsoft.com/windows)
[](LICENSE)
[](https://en.wikipedia.org/wiki/C_(programming_language))
[]()
## 🎯 关于本项目 **PEParser** 是一个使用 C 语言开发的命令行工具,用于分析和提取 PE (Portable Executable) 格式可执行文件的详细信息——这是 Windows 下可执行文件、库和驱动程序的标准格式。 适用于: - 🔐 **恶意软件分析** - 识别可疑行为 - 🔧 **逆向工程** - 了解可执行文件的内部结构 - 🛠️ **开发** - 调试编译和链接问题 - 🎓 **教育** - 在实践中学习 PE 格式 - 🔍 **取证** - 提取可疑文件的元数据
## ✨ 功能 ### 🏗️ 结构分析 - ✅ **DOS Header** - MS-DOS 头 (Magic "MZ") - ✅ **NT Headers** - PE 签名、File Header 和 Optional Header - ✅ **Section Headers** - 所有节区 (.text, .data, .rdata 等) - ✅ **Data Directories** - Export, Import, Resource, Debug 等
### 🔍 高级分析 - 🆕 **Import Table** - 导入的 DLL 和函数 - 🆕 **Export Table** - 导出的函数(尤其是 DLL) - 🆕 **编译器检测** - 识别 MSVC, MinGW/GCC 等 - 🆕 **Packer 检测** - 识别 UPX 和其他 packer - 🆕 **熵分析** - 检测加壳/加密的节区
### 🎨 可视化界面 - 📊 **彩色输出** - 使用颜色提升视觉效果 - 📐 **结构化排版** - 使用表格和边框进行排版 - 📝 **支持 UTF-8** - 支持特殊字符和重音符号 - 🖥️ **交互模式** - 带有编号选项的菜单
## 📸 截图 ### 主菜单 ``` ╔════════════════════════════════════════════════════════════════╗ ║ PE PARSER - ANALISADOR DE PE ║ ║ Versão 2.0 - Windows x86/x64 ║ ╚════════════════════════════════════════════════════════════════╝ ╔════════════════════════════════════════════════════════════════╗ ║ MENU DE OPÇÕES ║ ╚════════════════════════════════════════════════════════════════╝ [1] DOS Header [2] NT Headers [3] Data Directories [4] Section Headers [5] Import Table [6] Export Table [7] Detect Compiler [8] Entropy Analysis [9] Show ALL [0] Exit ``` ### 熵分析示例 ``` ╔════════════════════════════════════════════════════════════════╗ ║ ANÁLISE DE ENTROPIA ║ ╚════════════════════════════════════════════════════════════════╝ Entropia (0 = nenhuma aleatoriedade, 8 = alta aleatoriedade) Seções com entropia > 7.5 podem indicar compressão/criptografia .text: 6.234 ⚠ MÉDIA .data: 4.891 ✓ BAIXA .rsrc: 7.892 ⚠ ALTA ```
## 📋 环境要求 - **操作系统:** Windows XP 或更高版本 (x86/x64) - **编译器:** GCC, MinGW 或 Visual Studio - **库:** Windows SDK (已包含在 Visual Studio 中)
## 🛠️ 安装说明 ``` git clone https://github.com/Guilherme-alexander/PEParser.git cd PEParser ``` ### 使用 GCC/MinGW 编译 ``` # Compilar o programa gcc PEParser.c -o PEParser.exe -luser32 -lm # Compilar com otimizações gcc PEParser.c -o PEParser.exe -luser32 -lm -O2 # Compilar com debug gcc PEParser.c -o PEParser.exe -luser32 -lm -g ``` ### 使用 Visual Studio 编译 ``` cl PEParser.c /Fe:PEParser.exe /link user32.lib ```
### 使用 CMake 编译(可选) ``` cmake_minimum_required(VERSION 3.10) project(PEParser) set(CMAKE_C_STANDARD 99) add_executable(PEParser PEParser.c) target_link_libraries(PEParser user32) ```
## 🚀 如何使用 ### 交互式使用 ``` # Executar o programa com caminho do arquivo PEParser.exe C:\Windows\System32\notepad.exe # Executar o programa PEParser.exe # Digite o caminho do arquivo Digite o caminho do arquivo PE: C:\Windows\System32\notepad.exe # Escolha uma opção do menu Digite a opção desejada: 4 ``` ### 使用参数 ``` # Passar o arquivo diretamente PEParser.exe C:\Windows\System32\notepad.exe ``` ### 菜单选项 | 选项 | 描述 | |-------|-----------| | 1 | DOS Header - MS-DOS 头 | | 2 | NT Headers - PE 签名、File 和 Optional Header | | 3 | Data Directories - Export, Import, Resource 等 | | 4 | Section Headers - 每个节区的信息 | | 5 | Import Table - 导入的 DLL 和函数 | | 6 | Export Table - 导出的函数 | | 7 | Detect Compiler - 识别编译器/packer | | 8 | Entropy Analysis - 随机性分析 | | 9 | Show ALL - 显示所有信息 | | 0 | Exit - 退出程序 |
## 📁 代码结构 ``` PEParser/ ├── PEParser.c # Código fonte principal ├── README.md # Documentação ├── LICENSE # Licença MIT ├── .gitignore # Arquivos ignorados pelo Git └── examples/ # Exemplos de arquivos PE ├── hello.exe ├── sample.dll └── malware.exe (para análise) ``` ### 主要函数 ``` // Cabeçalhos básicos void printDosHeader(LPVOID fileData); void printNTHeaders(LPVOID fileData); void printDataDirectories(LPVOID fileData); void printSectionHeaders(LPVOID fileData); // Análise avançada void printImports(LPVOID fileData); void printExports(LPVOID fileData); void detectCompiler(LPVOID fileData); void analyzeEntropy(LPVOID fileData); // Utilitários DWORD RVAToRaw(LPVOID fileData, DWORD rva); double calculateEntropy(BYTE* data, DWORD size); ```
## 📊 输出示例 ### DOS Header ``` ╔════════════════════════════════════════════════════════════════╗ ║ CABEÇALHO DOS - DOS HEADER ║ ╚════════════════════════════════════════════════════════════════╝ [✓] Magic MZ válido (0x5a4d) e_magic (MZ): 0x5a4d e_cblp (Bytes na última página): 0x90 e_cp (Páginas no arquivo): 0x3 e_crlc (Realocações): 0x0 e_cparhdr (Tamanho do cabeçalho em parágrafos): 0x4 e_minalloc (Mínimo de memória extra): 0x0 e_maxalloc (Máximo de memória extra): 0xffff e_ss (Segmento inicial da pilha): 0x0 e_sp (Ponteiro de pilha inicial): 0xb8 e_csum (Checksum): 0x0 e_ip (IP inicial): 0x0 e_cs (Segmento CS inicial): 0x0 e_lfarlc (Offset da tabela de relocação): 0x40 e_ovno (Número de overlays): 0x0 e_oemid (ID OEM): 0x0 e_oeminfo (Informações OEM): 0x0 e_lfanew (Offset para NT Headers): 0xe0 ``` ### Import Table ``` ╔════════════════════════════════════════════════════════════════╗ ║ TABELA DE IMPORTAÇÃO - IMPORT TABLE ║ ╚════════════════════════════════════════════════════════════════╝ ─── DLL [1]: KERNEL32.dll - CreateFileA - ReadFile - WriteFile - CloseHandle - GetLastError Total funções: 5 ─── DLL [2]: USER32.dll - MessageBoxA - MessageBoxW Total funções: 2 Total de DLLs importadas: 2 ```
## 🗺️ 路线图 ### 2.0 版本(当前) - [x] 完整的头部分析 - [x] Import Table - [x] Export Table - [x] 编译器检测 - [x] 熵分析 - [x] 支持 UTF-8 - [x] 终端颜色 ### 2.1 版本(计划中) - [ ] 支持 .DLL 文件 - [ ] 导出为 JSON/XML - [ ] 资源分析(图标、菜单) - [ ] 检测更多 packer (UPX, ASPack 等) - [ ] 集成 YARA rules ### 3.0 版本(未来) - [ ] 图形界面 (GUI) - [ ] 沙箱行为分析 - [ ] 反调试检测 - [ ] 用于扩展的插件 - [ ] 用于分析多个文件的批处理模式 ## 👨💻 作者 **你的名字** - GitHub: [@Guilherme-alexander](https://github.com/Guilherme-alexander) - LinkedIn: [Guilherme Alexander](https://www.linkedin.com/in/guilherme-alexander-dev/)
## 📄 许可证 本项目基于 **MIT License** 授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
## ⭐ 显示您的支持 如果这个项目对您有帮助,请考虑: - ⭐ 在 GitHub 上给它点个 Star - 🐛 报告 Bug - 💡 提出改进建议 - 🔀 贡献代码 **用 ❤️ 为 Windows 安全和开发社区打造** [⬆ 回到顶部](#-peparser---windows-portable-executable-analyzer)
## 🎯 关于本项目 **PEParser** 是一个使用 C 语言开发的命令行工具,用于分析和提取 PE (Portable Executable) 格式可执行文件的详细信息——这是 Windows 下可执行文件、库和驱动程序的标准格式。 适用于: - 🔐 **恶意软件分析** - 识别可疑行为 - 🔧 **逆向工程** - 了解可执行文件的内部结构 - 🛠️ **开发** - 调试编译和链接问题 - 🎓 **教育** - 在实践中学习 PE 格式 - 🔍 **取证** - 提取可疑文件的元数据
## ✨ 功能 ### 🏗️ 结构分析 - ✅ **DOS Header** - MS-DOS 头 (Magic "MZ") - ✅ **NT Headers** - PE 签名、File Header 和 Optional Header - ✅ **Section Headers** - 所有节区 (.text, .data, .rdata 等) - ✅ **Data Directories** - Export, Import, Resource, Debug 等
### 🔍 高级分析 - 🆕 **Import Table** - 导入的 DLL 和函数 - 🆕 **Export Table** - 导出的函数(尤其是 DLL) - 🆕 **编译器检测** - 识别 MSVC, MinGW/GCC 等 - 🆕 **Packer 检测** - 识别 UPX 和其他 packer - 🆕 **熵分析** - 检测加壳/加密的节区
### 🎨 可视化界面 - 📊 **彩色输出** - 使用颜色提升视觉效果 - 📐 **结构化排版** - 使用表格和边框进行排版 - 📝 **支持 UTF-8** - 支持特殊字符和重音符号 - 🖥️ **交互模式** - 带有编号选项的菜单
## 📸 截图 ### 主菜单 ``` ╔════════════════════════════════════════════════════════════════╗ ║ PE PARSER - ANALISADOR DE PE ║ ║ Versão 2.0 - Windows x86/x64 ║ ╚════════════════════════════════════════════════════════════════╝ ╔════════════════════════════════════════════════════════════════╗ ║ MENU DE OPÇÕES ║ ╚════════════════════════════════════════════════════════════════╝ [1] DOS Header [2] NT Headers [3] Data Directories [4] Section Headers [5] Import Table [6] Export Table [7] Detect Compiler [8] Entropy Analysis [9] Show ALL [0] Exit ``` ### 熵分析示例 ``` ╔════════════════════════════════════════════════════════════════╗ ║ ANÁLISE DE ENTROPIA ║ ╚════════════════════════════════════════════════════════════════╝ Entropia (0 = nenhuma aleatoriedade, 8 = alta aleatoriedade) Seções com entropia > 7.5 podem indicar compressão/criptografia .text: 6.234 ⚠ MÉDIA .data: 4.891 ✓ BAIXA .rsrc: 7.892 ⚠ ALTA ```
## 📋 环境要求 - **操作系统:** Windows XP 或更高版本 (x86/x64) - **编译器:** GCC, MinGW 或 Visual Studio - **库:** Windows SDK (已包含在 Visual Studio 中)
## 🛠️ 安装说明 ``` git clone https://github.com/Guilherme-alexander/PEParser.git cd PEParser ``` ### 使用 GCC/MinGW 编译 ``` # Compilar o programa gcc PEParser.c -o PEParser.exe -luser32 -lm # Compilar com otimizações gcc PEParser.c -o PEParser.exe -luser32 -lm -O2 # Compilar com debug gcc PEParser.c -o PEParser.exe -luser32 -lm -g ``` ### 使用 Visual Studio 编译 ``` cl PEParser.c /Fe:PEParser.exe /link user32.lib ```
### 使用 CMake 编译(可选) ``` cmake_minimum_required(VERSION 3.10) project(PEParser) set(CMAKE_C_STANDARD 99) add_executable(PEParser PEParser.c) target_link_libraries(PEParser user32) ```
## 🚀 如何使用 ### 交互式使用 ``` # Executar o programa com caminho do arquivo PEParser.exe C:\Windows\System32\notepad.exe # Executar o programa PEParser.exe # Digite o caminho do arquivo Digite o caminho do arquivo PE: C:\Windows\System32\notepad.exe # Escolha uma opção do menu Digite a opção desejada: 4 ``` ### 使用参数 ``` # Passar o arquivo diretamente PEParser.exe C:\Windows\System32\notepad.exe ``` ### 菜单选项 | 选项 | 描述 | |-------|-----------| | 1 | DOS Header - MS-DOS 头 | | 2 | NT Headers - PE 签名、File 和 Optional Header | | 3 | Data Directories - Export, Import, Resource 等 | | 4 | Section Headers - 每个节区的信息 | | 5 | Import Table - 导入的 DLL 和函数 | | 6 | Export Table - 导出的函数 | | 7 | Detect Compiler - 识别编译器/packer | | 8 | Entropy Analysis - 随机性分析 | | 9 | Show ALL - 显示所有信息 | | 0 | Exit - 退出程序 |
## 📁 代码结构 ``` PEParser/ ├── PEParser.c # Código fonte principal ├── README.md # Documentação ├── LICENSE # Licença MIT ├── .gitignore # Arquivos ignorados pelo Git └── examples/ # Exemplos de arquivos PE ├── hello.exe ├── sample.dll └── malware.exe (para análise) ``` ### 主要函数 ``` // Cabeçalhos básicos void printDosHeader(LPVOID fileData); void printNTHeaders(LPVOID fileData); void printDataDirectories(LPVOID fileData); void printSectionHeaders(LPVOID fileData); // Análise avançada void printImports(LPVOID fileData); void printExports(LPVOID fileData); void detectCompiler(LPVOID fileData); void analyzeEntropy(LPVOID fileData); // Utilitários DWORD RVAToRaw(LPVOID fileData, DWORD rva); double calculateEntropy(BYTE* data, DWORD size); ```
## 📊 输出示例 ### DOS Header ``` ╔════════════════════════════════════════════════════════════════╗ ║ CABEÇALHO DOS - DOS HEADER ║ ╚════════════════════════════════════════════════════════════════╝ [✓] Magic MZ válido (0x5a4d) e_magic (MZ): 0x5a4d e_cblp (Bytes na última página): 0x90 e_cp (Páginas no arquivo): 0x3 e_crlc (Realocações): 0x0 e_cparhdr (Tamanho do cabeçalho em parágrafos): 0x4 e_minalloc (Mínimo de memória extra): 0x0 e_maxalloc (Máximo de memória extra): 0xffff e_ss (Segmento inicial da pilha): 0x0 e_sp (Ponteiro de pilha inicial): 0xb8 e_csum (Checksum): 0x0 e_ip (IP inicial): 0x0 e_cs (Segmento CS inicial): 0x0 e_lfarlc (Offset da tabela de relocação): 0x40 e_ovno (Número de overlays): 0x0 e_oemid (ID OEM): 0x0 e_oeminfo (Informações OEM): 0x0 e_lfanew (Offset para NT Headers): 0xe0 ``` ### Import Table ``` ╔════════════════════════════════════════════════════════════════╗ ║ TABELA DE IMPORTAÇÃO - IMPORT TABLE ║ ╚════════════════════════════════════════════════════════════════╝ ─── DLL [1]: KERNEL32.dll - CreateFileA - ReadFile - WriteFile - CloseHandle - GetLastError Total funções: 5 ─── DLL [2]: USER32.dll - MessageBoxA - MessageBoxW Total funções: 2 Total de DLLs importadas: 2 ```
## 🗺️ 路线图 ### 2.0 版本(当前) - [x] 完整的头部分析 - [x] Import Table - [x] Export Table - [x] 编译器检测 - [x] 熵分析 - [x] 支持 UTF-8 - [x] 终端颜色 ### 2.1 版本(计划中) - [ ] 支持 .DLL 文件 - [ ] 导出为 JSON/XML - [ ] 资源分析(图标、菜单) - [ ] 检测更多 packer (UPX, ASPack 等) - [ ] 集成 YARA rules ### 3.0 版本(未来) - [ ] 图形界面 (GUI) - [ ] 沙箱行为分析 - [ ] 反调试检测 - [ ] 用于扩展的插件 - [ ] 用于分析多个文件的批处理模式 ## 👨💻 作者 **你的名字** - GitHub: [@Guilherme-alexander](https://github.com/Guilherme-alexander) - LinkedIn: [Guilherme Alexander](https://www.linkedin.com/in/guilherme-alexander-dev/)
## 📄 许可证 本项目基于 **MIT License** 授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
## ⭐ 显示您的支持 如果这个项目对您有帮助,请考虑: - ⭐ 在 GitHub 上给它点个 Star - 🐛 报告 Bug - 💡 提出改进建议 - 🔀 贡献代码 **用 ❤️ 为 Windows 安全和开发社区打造** [⬆ 回到顶部](#-peparser---windows-portable-executable-analyzer)
标签:Bash脚本, DAST, PE文件解析, Windows, 云资产清单, 客户端加密, 恶意软件分析, 逆向工程