abfsdgrl/Teker

GitHub: abfsdgrl/Teker

一款轻量高效的 Windows PE 静态分析工具包,同时提供 GUI 和 CLI,专为恶意软件分析和逆向工程场景设计。

Stars: 3 | Forks: 0

Teker

Teker

Windows 静态 PE 分析工具包 — GUI 和 CLI

Platform C++20 Qt 6 License Stars

Teker 是一款开源的 PE (Portable Executable) 分析工具包,专为恶意软件分析师、逆向工程师和安全研究人员打造。它同时提供了一个包含 15 个标签页的 Qt6 GUI 和一个拥有 25+ 命令的 CLI。整个应用程序通过内存映射 I/O 和自定义渲染视图运行,内存占用仅约 50MB —— 无需将文件复制到内存中。 ### Teker vs. PeStudio — 相同文件,相同机器 | | Teker | PeStudio 9.61 | |---|---|---| | **RAM** | 59.4 MB | 2,067.8 MB | | **CPU** | 0% idle | 9.1% idle | | **File** | `notepad.exe` (360KB) | `notepad.exe` (360KB) | ![Teker — 59MB RAM](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b846daa52b191627.png) ![PeStudio — 2GB RAM](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/cc5e8a55d0191629.png) ## 演示 ![Teker GUI Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7da084eeca191631.gif) ## GUI — 15 个分析标签页 GUI 将所有繁重的分析任务(反汇编、哈希计算、熵值计算、风险评分、XRef、函数发现)放在后台线程中运行。UI 永远不会卡顿。您可以在第一个文件仍在分析时打开第二个文件 —— 前一个工作线程会被安全取消。 ### 概览标签页 PE 头字段、文件元数据、架构、入口点、镜像基址、校验和以及时间戳 —— 全部从实际的 DOS/NT/Optional 头解析而来。 ![Overview](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/71c3127d08191633.png) ### 区段标签页 区段表包含名称、虚拟地址、虚拟大小、原始偏移、原始大小、特征标志以及每个区段的 Shannon 熵。高熵(>7.0)区段会被标记为可能已加壳或加密。 ### 十六进制标签页 自定义渲染的十六进制查看器/编辑器。不是 QTextEdit —— 字节通过 `QPainter` 直接绘制以获得速度。特性包括: - 可配置显示的地址/十六进制/ASCII 列 - 支持鼠标拖动的字节级选择 - 编辑模式(工具栏切换或右键单击)支持就地十六进制编辑 - 按十六进制模式或文本字符串搜索 - 复制为十六进制、文本、C 数组或原始地址 - 侧边栏的区段感知导航 - 将补丁保存到原始文件或另存为新副本 ### 反汇编标签页 由 Capstone Engine 驱动的 x86/x64 反汇编。自定义渲染 —— 每条指令单独绘制并带有语法着色(调用=黄色,跳转=紫色,返回=红色,空操作=灰色)。特性包括: - 地址、字节、助记符、操作数列 - 带有后退堆栈(类似浏览器)的分支目标导航 - 每个地址的用户注释和标签 - 被引用地址上的 XRef 计数徽章 - 按助记符、地址或操作数文本搜索 - 可配置的指令限制(默认:10K) ![Disassembly](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/47cd9fa5ff191634.png) ### 导入表标签页 从导入目录解析的所有导入 DLL 及其函数。显示函数名称、序号、Thunk RVA。仅序号导入显示为 `Ordinal_N`。绑定导入和延迟导入单独解析。可疑的 API 模式(进程注入、键盘记录、加密)会被高亮显示。 ### 导出表标签页 导出函数及其名称、序号、RVA。转发导出显示转发目标字符串。支持高达 65,536 个导出并进行边界检查。 ### 字符串标签页 字符串提取并分为 9 种类型: | Category | What it catches | |---|---| | URLs | `http://`, `https://`, `ftp://` | | IP Addresses | IPv4 patterns with port detection | | Email Addresses | `user@domain.tld` patterns | | File Paths | Windows paths, `/etc/` paths | | Registry Keys | `HKLM\`, `HKCU\`, `SOFTWARE\` | | Domains | Multi-TLD domain names | | Suspicious | `cmd.exe`, `powershell`, `mimikatz`, crypto keywords | | Base64 | Strings matching Base64 charset with minimum entropy | | Interesting | Debug strings, version strings, PDB paths | 从 ASCII 和 UTF-16 (宽) 字符串中提取。可配置最小长度、扫描限制和最大字符串数量。 ![Strings](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5d296119fa191635.png) ### 风险分析标签页 0-100 风险评分系统,包含 52+ 个指标检查。每个指标都有一个 ID(IND-001 至 IND-052)、严重级别、类别和分值贡献。 评分考虑: - 区段异常(可写+可执行、原始大小为零、高熵) - 导入异常(进程注入 API、调试规避、加密使用) - 头部异常(可疑时间戳、校验和损坏、非标准入口点) - 资源异常(嵌入的可执行文件、超大资源) - 数字签名验证 —— 来自受信任供应商的有效签名可将分数降低高达 85% ![Risk Analysis with Signature](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f0867d89ad191636.png) ### 资源标签页 带有类型识别的资源目录树(RT_ICON, RT_MANIFEST, RT_VERSION, RT_BITMAP 等)。显示资源大小、代码页和语言。已知类型的数据预览。 ### YARA 标签页 使用 YARA 规则扫描加载的 PE。加载单个 `.yar` 文件或整个目录。内置 4 个规则集: - `anti_debug.yar` — 反调试技术签名 - `crypto_signatures.yar` — 加密常量检测 - `packer_signatures.yar` — 已知壳/保护器模式 - `suspicious_sections.yar` — 异常区段特征 还包括一个 YARA 规则生成器,可根据当前 PE 的特征创建规则。 ### XRefs 标签页 基于反汇编输出的交叉引用分析。识别: - 直接调用 (`CALL addr`) - 间接调用 (`CALL [reg+offset]`) - 直接跳转 (`JMP addr`, `Jcc addr`) - RIP 相对引用 (x64) - 对已知导入的数据引用 构建具有调用者→被调用者关系和符号解析的调用图。 ### 函数标签页 从入口点开始并通过调用目标扩展的函数发现。显示: - 函数地址、大小、基本块数量 - 带有分支分析的基本块边界 ![Functions](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/378c38294b191637.png) ### 编辑器标签页 就地修改 PE 头和区段: - 编辑 Optional Header 字段(入口点、镜像基址、区段对齐) - 编辑区段属性(名称、特征、大小) - 添加新区段 - 移除区段 - 将修改后的 PE 保存到新文件 所有更改在写入前都会被跟踪和验证。 ### 对比标签页 并排加载两个 PE 文件并生成差异报告。比较头部、区段、导入、导出和元数据。差异通过颜色编码高亮显示。 ### 插件标签页 管理和执行插件。三种插件类型: - **YARA rules** — 位于 `plugins/yara/` 的 `.yar` 文件 - **JSON indicators** — 位于 `plugins/indicators/` 的自定义指标定义 - **Python scripts** — 位于 `plugins/scripts/` 的分析脚本,接收 JSON 格式的 PE 元数据 包括用于链接插件的管道引擎。两个内置管道:`full_scan` 和 `quick_triage`。 按严重程度和插件类型筛选结果。包含 12 个内置插件。 有关编写自己的插件,请参阅 [插件开发指南](docs/PLUGIN_DEVELOPMENT.md)。 ## CLI — 25+ 命令 GUI 中可用的每个分析模块也有对应的 CLI 等效功能。所有命令都支持 `--json` 以进行机器可读的输出。 ``` # 带评分的风险分析 .\teker.exe risk target.exe # 文件信息与 Header .\teker.exe info target.exe .\teker.exe headers target.exe # Hash (MD5, SHA1, SHA256, IMPHASH) .\teker.exe hash target.exe # 字符串提取 .\teker.exe strings target.exe .\teker.exe strings target.exe --urls # 指标 (52+ 项检查) .\teker.exe indicators target.exe # 反汇编 .\teker.exe disasm target.exe .\teker.exe entry target.exe # YARA .\teker.exe yara --rules rules/ target.exe .\teker.exe yara-gen target.exe # 批量扫描整个目录 .\teker.exe batch C:\Samples # 完整 JSON 报告 .\teker.exe all target.exe --json # HTML/JSON 报告文件 .\teker.exe report target.exe --format html -o report.html ```
完整命令列表 ``` ANALYSIS: info File metadata, architecture, entry point hash MD5, SHA1, SHA256, IMPHASH entropy Per-section Shannon entropy strings Categorized string extraction (9 types) indicators 52+ anomaly pattern checks risk 0-100 risk scoring with digital signature check manifest UAC level, compatibility flags resources Resource directory listing tls TLS callback detection version Version info strings overlay Overlay data detection packer Packer/protector signature matching evasion Anti-debug, anti-VM, sandbox evasion detection yara Scan with YARA rules yara-gen Generate YARA rule from PE characteristics disasm Disassemble .text section entry Disassemble from entry point all Run every analysis command STRUCTURE: sections Section table with entropy imports Import directory (DLLs + functions) exports Export directory headers Full DOS/NT/Optional header dump PLUGINS: plugins List discovered plugins plugin-run Execute all active plugins pipeline-list Show available pipelines pipeline-run Execute a named pipeline TOOLS: compare Diff two PE files batch Scan directory for PE files search Search for byte/string pattern report Generate HTML or JSON report ```
## 工作原理 — 架构 ### 内存映射 I/O PE 文件永远不会加载到进程内存中。相反,Teker 调用 `CreateFileMapping` + `MapViewOfFile` 将文件映射到虚拟地址空间。操作系统内核仅分页实际访问的 4KB 页面。一个 500MB 的 PE 文件可能仅使用 2-3MB 的物理 RAM。 ``` Traditional approach: File → read() → malloc buffer → process Teker approach: File → CreateFileMapping → MapViewOfFile → direct pointer access ``` ### 自定义控件渲染 十六进制查看器和反汇编视图不使用 `QTextEdit`、`QTableView` 或任何现成的 Qt 控件。它们重写 `paintEvent()` 并使用 `QPainter` 直接绘制每一行。这意味着: - 10,000 条指令 = 一个 `std::vector` + 仅绘制可见的约 40 行 - 没有 QTreeWidgetItem 对象,没有模型/视图开销,没有 DOM ### 边界分析 每个分析模块都在 `constants.h` 中定义了硬性限制,以防止资源耗尽: - 反汇编:256KB 窗口 (`DISASM_MAX_BYTES`),10K 指令上限 (`DISASM_MAX_INSNS`) - 字符串:可配置扫描限制,每个字符串最大 4096 字节 (`MAX_STRING_LENGTH`) - 导入:10K 迭代上限 (`MAX_IMPORT_ITERATIONS`) - 区段:512 个区段硬性限制 (`MAX_PE_SECTIONS_HARD_LIMIT`) - 文件大小:最大 2GB (`MAX_FILE_SIZE`) - 资源:每个目录层级 100 个条目 ### 后台线程 所有繁重的工作(反汇编、哈希计算、熵值计算、风险分析、YARA 扫描、XRef、函数发现)都在 `QThread` 工作线程中运行。UI 线程仅通过 Qt 信号接收结果。取消是协作式的 —— 每个分析阶段都会检查 `isCancelRequested()`。 ## 安装 从 [Releases](../../releases) 下载最新版本,解压并运行。 | File | Description | |------|-------------| | `TekerGUI.exe` | GUI with 15 analysis tabs and 3 themes (Dark, Light, Monokai) | | `teker.exe` | CLI with 25+ commands and JSON output | **Requirements:** Windows 10/11 (x64), [Visual C++ Redistributable 2022](https://aka.ms/vs/17/release/vc_redist.x64.exe) 无需安装程序。解压并运行。 ## 从源代码构建 **Requirements:** Visual Studio 2022 (C++ Desktop workload, C++20 support), Qt 6.2+, CMake 3.16+, vcpkg with `libyara:x64-windows` Capstone Engine 和 Google Test 由 CMake 自动获取。 ``` git clone https://github.com/abfsdgrl/teker.git cd teker cmake -S . -B build ` -G "Visual Studio 17 2022" -A x64 ` -DBUILD_TESTING=ON ` -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" ` -DCMAKE_PREFIX_PATH="C:/Qt/6.6.0/msvc2019_64" cmake --build build --config Release # 为 GUI 部署 Qt DLL C:\Qt\6.6.0\msvc2019_64\bin\windeployqt.exe build\bin\Release\TekerGUI.exe Copy-Item -Recurse data build\bin\Release\data Copy-Item -Recurse plugins build\bin\Release\plugins ``` 有关详细说明、常见 Qt 路径、仅 CLI 构建和故障排除,请参阅 [docs/BUILD.md](docs/BUILD.md)。 ## 贡献 欢迎贡献、错误报告和功能请求。有关指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [GNU General Public License v3.0](LICENSE) ## 免责声明 Teker 提供可疑模式的指标 —— 而非确定的恶意软件分类。结果应始终通过其他工具和手动分析进行验证。 ## 支持 如果您发现 Teker 在您的分析工作中很有用,请考虑请我喝杯咖啡! Buy Me A Coffee ## 致谢 - [Capstone Engine](https://www.capstone-engine.org/) — Disassembly framework - [Qt](https://www.qt.io/) — GUI framework - [YARA](https://virustotal.github.io/yara/) — Pattern matching engine - [nlohmann/json](https://github.com/nlohmann/json) — JSON library
标签:AMSI绕过, Bash脚本, C++20, CLI, Conpot, DAST, Findomain, GUI, PE分析, Qt6, SNI设置, Wayback Machine, WiFi技术, Windows安全, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 内存映射, 反汇编, 可执行文件分析, 威胁检测, 开源安全工具, 恶意软件分析, 文件结构解析, 无服务器架构, 熵计算, 调试插件, 轻量级工具, 逆向工具, 逆向工程, 逆向工程平台, 静态分析, 风险评分