anpa1200/PE-Import-Analyzer

GitHub: anpa1200/PE-Import-Analyzer

面向恶意软件分析人员的命令行 PE 导入表解析工具,自动提取并解释 DLL/API 用途、标记可疑函数组合,为静态分析和检测规则设计提供线索。

Stars: 2 | Forks: 1

# PE Import Analyzer 为恶意软件分析师和 CTI 工程师提供的 PE 导入表分析工具:解释 DLL/API 用途,标记可疑的 API 组合,并将导入表转化为能力和检测线索。 ## CTI 用途 当需要对 Windows 二进制文件进行快速能力分类时使用此工具。导入表不能证明其实际行为,但它们是 ATT&CK 映射、沙箱规划、YARA 规则设计以及分析师报告的有用线索。 ## 防御者输出 | 输出 | 用途 | |---|---| | DLL/API 列表 | 能力分类 | | API 解释 | 分析师上下文 | | 危险 API 标记 | 检测和审查优先级 | | HTML / 文本 / JSON | 报告和自动化 | | LLM 就绪输出 | 结构化的后续分析 | [![Python 版本](https://img.shields.io/badge/python-3.7%2B-blue.svg)](https://www.python.org/) [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![LIEF Parser](https://img.shields.io/badge/LIEF-Parser-orange.svg)](https://lief.quarkslab.com/) 一个用于分析 PE 文件导入表的命令行工具。提供详细的 DLL 描述、API 函数解释以及灵活的输出格式(HTML、纯文本、JSON)。非常适合**恶意软件分析师**、**逆向工程师**和**取证调查员**。 **📖 [PE Import Analyzer:恶意软件分析师与逆向工程师实用指南](https://medium.com/@1200km/pe-import-analyzer-a-practical-guide-for-malware-analysts-and-reverse-engineers-29b8b98aeaf3)** (Medium) — 涵盖安装、使用、风险分类、可疑组合检测以及 LLM 就绪输出。 ## 🔍 功能 - **导入表提取**:使用 [LIEF](https://lief.quarkslab.com/) 解析 PE 文件并提取所有导入的 DLL 及其函数。 - **延迟加载导入**:可选解析延迟加载导入表(LIEF 0.12+);显示为 `DLL_NAME (delay-load)`。 - **DLL 摘要**:内置核心 Windows DLL 的说明(例如 `kernel32.dll`、`user32.dll`、`advapi32.dll`、`ntdll.dll`、`ws2_32.dll`、`wininet.dll` 等)。 - **API 解释**:不区分大小写的查找;支持按 DLL 限制(默认 20 个)或使用 `--all-apis` 显示完整列表。 - **包含所有 DLL**:不再跳过未知的 DLL;它们会显示为“No description available”并列出完整的 API 列表。 - **危险函数标记**:针对高风险 API 的可选部分,包含分类(注入、持久化、网络/C2、加密/规避等)。为恶意软件和强化分析扩展了列表。 - **多种输出格式**:HTML(带样式报告)、纯文本和 JSON(用于脚本和工具集成)。 - **非交互模式**:使用 `--no-prompt` 配合 `--html`/`--txt`/`--json`、`--dangerous` 和 `-o FILE` 进行自动化操作。 - **稳健性**:包含文件存在性和可读性检查;对非 PE 文件或损坏的文件提供清晰的错误提示。 ## 📦 安装 ``` # 从 PyPI pip install pe-import-analyzer # Clone 代码仓库 git clone https://github.com/anpa1200/PE-Import-Analyzer.git && cd PE-Import-Analyzer # Create 并 activate 虚拟环境(推荐) python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Install 依赖 pip install -r requirements.txt ``` *仅需 **LIEF** (`lief>=0.14.0`) 和 Python 3.8+。* ### 开发 ``` pip install -e ".[dev]" # lief + pytest pytest tests/ -v # run tests (CLI tests need lief) ``` ## 🚀 用法 ``` python3 PE-Import-Analyzer.py [options] # 或者在 PyPI install 之后: pe-import-analyzer [options] ``` ### 选项 | 选项 | 描述 | |--------|-------------| | `--html` | 输出 HTML 报告。 | | `--txt` | 输出纯文本报告。 | | `--json` | 输出 JSON(用于脚本)。 | | `--dangerous` | 包含危险/可疑 API 部分。 | | `--no-dangerous` | 排除危险 API 部分。 | | `-o FILE`, `--output FILE` | 输出文件路径。 | | `--no-prompt` | 非交互式:仅使用默认设置和 CLI 标志。 | | `--all-apis` | 显示每个 DLL 的所有 API(默认:前 20 个)。 | | `--no-delay-load` | 跳过延迟加载导入表。 | | `-q`, `--quiet` | 最少输出(仅错误)。 | | `-v`, `--verbose` | 详细日志记录。 | | `--version` | 显示版本并退出。 | ### 示例 **交互式(提示选择格式和选项):** ``` python3 PE-Import-Analyzer.py sample.exe ``` **非交互式,生成包含危险 API 的 HTML 报告:** ``` python3 PE-Import-Analyzer.py sample.exe --html --dangerous --no-prompt -o report.html ``` **用于工具集成的 JSON:** ``` python3 PE-Import-Analyzer.py sample.exe --json --no-prompt -o report.json ``` **显示完整的 API 列表,输出文本和 HTML:** ``` python3 PE-Import-Analyzer.py sample.exe --txt --html --all-apis --no-prompt ``` ## 退出代码 | 代码 | 含义 | |------|----------------| | 0 | 成功 | | 2 | 未找到文件 | | 3 | 权限被拒绝 | | 4 | 无效或损坏的 PE| | 5 | 输出写入错误 | ## 🛠️ 函数参考 | 函数 | 描述 | |----------|-------------| | `extract_and_sort_imports(file_path, include_delay_load=True)` | 解析 PE 并返回 DLL → 已排序的导入列表;支持可选延迟加载。 | | `get_api_explanation(dll_info, api_name)` | 不区分大小写的 API 解释查找。 | | `generate_text_output(...)` | 纯文本报告。 | | `generate_html_output(...)` | HTML 报告。 | | `generate_json_output(...)` | 包含摘要和危险分类的 JSON 结构。 | | `dll_api_explanations` | 嵌套字典:DLL 名称 → `explanation` + `apis`。 | | `DANGEROUS_API_LIST` | 字典:分类 → 危险 API 名称列表(小写)。 | ## 📄 更新日志 有关版本历史,请参阅 [CHANGELOG.md](CHANGELOG.md)。 ## 相关仓库与文章 | 资源 | 链接 | |----------|------| | **PE-Import-Analyzer(本仓库)** | [GitHub](https://github.com/anpa1200/PE-Import-Analyzer) · [Medium:PE Import Analyzer 指南](https://medium.com/@1200km/pe-import-analyzer-a-practical-guide-for-malware-analysts-and-reverse-engineers-29b8b98aeaf3) | | **Static-malware-Analysis-Orchestrator** | [GitHub](https://github.com/anpa1200/Static-malware-Analysis-Orchestrator) — 一键流水线(分类、字符串、PE 导入、脱壳) · [Medium:完整工作流](https://medium.com/@1200km/basic-static-malware-analysis-from-triage-to-unpacking-explained-and-automated-9442ef3b11b8) | | **Unpacker** | [GitHub](https://github.com/anpa1200/Unpacker) · [Medium:Unpacker 指南](https://medium.com/@1200km/unpacker-a-practical-guide-to-modular-malware-packer-detection-and-unpacking-cf8ba924f25b) | | **String-Analyzer** | [GitHub](https://github.com/anpa1200/String-Analyzer-) · [Medium:String Analyzer 指南](https://medium.com/@1200km/a-practical-guide-to-string-analyzer-extract-and-analyze-strings-from-binaries-without-the-875dc74e4868) | | **Basic-File-Information-Gathering-Script** | [GitHub](https://github.com/anpa1200/Basic-File-Information-Gathering-Script) · [Medium:文件元数据与静态分析](https://medium.com/@1200km/one-tool-to-rule-them-all-file-metadata-static-analysis-for-malware-analysts-and-soc-teams-c6dba1f5b7de) | | **作者** | [Medium @1200km](https://medium.com/@1200km) | ## 📜 许可证 基于 **MIT License** 分发。详情请参阅 [LICENSE](LICENSE)。 ## 1200km 生态系统 本项目是 1200km 安全研究生态系统的一部分。使用 [AdversaryGraph](https://1200km.com/adversarygraph/) 进行从 CTI 到检测的工作流处理、ATT&CK/ATLAS 映射、攻击者关联分析、IOC 富集以及适合分析师的报告生成。 - [AdversaryGraph 项目主页](https://1200km.com/adversarygraph/) - [AdversaryGraph 文档](https://1200km.com/adversarygraph-docs/) - [实时 ATT&CK/ATLAS 工作区](https://1200km.com/threat-matrix/) - [1200km 安全研究生态系统](https://1200km.com/)
标签:DAST, DNS 反向解析, LIEF, PE文件分析, Python, 云安全监控, 云资产清单, 威胁情报, 开发者工具, 恶意软件分析, 文档结构分析, 无后门, 网络安全审计, 逆向工具, 逆向工程, 静态分析