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 就绪输出 | 结构化的后续分析 |
[](https://www.python.org/)
[](LICENSE)
[](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, 云安全监控, 云资产清单, 威胁情报, 开发者工具, 恶意软件分析, 文档结构分析, 无后门, 网络安全审计, 逆向工具, 逆向工程, 静态分析