js360000/RE-Pro

GitHub: js360000/RE-Pro

跨平台逆向工程工作台,将二进制分析、源码恢复、项目重建与 LLM 辅助移植整合为统一的 CLI/GUI/MCP 工作流程。

Stars: 2 | Forks: 0

# RE-Pro ![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue) ![接口](https://img.shields.io/badge/interfaces-CLI%20%7C%20GUI%20%7C%20MCP-2f6f4e) ![LLM 支持](https://img.shields.io/badge/LLM-GPT--5.5%20%7C%20GPT--5.4-1f6feb) ![平台](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-444) ![RE-Pro 主图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/390c45c0db031453.png) RE-Pro 是一个跨平台的逆向工程工作台,旨在将不透明的二进制文件和打包的应用程序转化为可读的证据、恢复的源代码以及可操作的重建工作流。 它将格式感知提取、源码恢复、外部工具编排、基于图的关联、Codex/OpenAI 辅助逼近、重建规划以及修补/签名工作流结合在一个系统中,提供了 CLI、PyQt5 桌面 GUI 和 MCP 服务器。 ## 为什么选择 RE-Pro - 在发布时恢复真实源码:source map、托管资源、BAML/XAML、Tauri 资产、清单、符号、包元数据和绑定的 Web 有效载荷。 - 关联一切:函数、字符串、框架、构件、资源、发现以及外部工具导出汇总于统一的分析图中。 - 超越报告:RE-Pro 生成项目模板、重建计划、签名计划、补丁包和有边界的包操作,而不是停留在静态转储。 - 支持多种界面工作:GUI 用于浏览/编辑,CLI 用于可重复的自动化,MCP 用于 LLM 驱动的证据、重构和重建工作流。 - 使用 OpenAI API 密钥或 `.codex/auth.json` 中的 Codex ChatGPT OAuth 凭证进行 GPT 辅助重构。 ## 核心亮点 ### 平台与包覆盖范围 - Windows:PE、MSI、NSIS、Inno、CAB、.NET apphost 和 bundle、PDB 工作流、PE 资源、原生/游戏/UI 启发式分析。 - Android:APK、APKS、AAB、DEX、AAR、`resources.arsc`、JADX/apktool 工作流、source-map 恢复、签名和重新打包支持。 - Apple:`.app`、`.ipa`、`.dmg`、`.pkg`、Mach-O 检查、权限、预置描述文件、应用扩展、框架启发式分析。 - Linux 和原生生态系统:ELF、AppImage、SquashFS、WASM、MIPS/PS2 风格的 ELF、Capstone 预览、Ghidra/rizin/radare2 导出。 - Java 和托管生态系统:JAR、WAR、EAR、AAR、ILSpy、WPF/BAML/XAML 恢复、ReadyToRun 检测、托管资源提取。 - 主机和游戏格式:PSARC、PSP PBP/DATA.PSP/DATA.PSAR、PS3 PKG 元数据、RARC、CRI/CPK、U8、NARC、AFS、HOG、WAD 系列标记、GDeflate 和面向 DDL 的游戏载荷提示。 ### 恢复与分析 - JavaScript 和 Web source-map 恢复,包含内置的 `sourcesContent`。 - Electron `app.asar` 和解压资源恢复,包括原生 ASAR 回退提取。 - Tauri 嵌入式资产提取与前端恢复。 - 在缺少 source map 时的尽力前端源码重组,包括剥离哈希的资产名称、Babel AST 格式化、React 编译器缓存规范化、import/name 传播、JSX 恢复以及可选的 LLM 源码级重写。 - 从符号服务器远程获取 PDB。 - 统一的 `analysis_index.json`,包含标准化的实体和关系。 - 结构化摄取与交叉关联 Ghidra、rizin、radare2、JADX 以及面向 ILSpy 的导出。 - 针对缺少符号的原生二进制文件,提供 MSVC RTTI、vftable、类布局、构造函数/析构函数阶段、thunk、调用边和伪 C++ 源码合成。 - 对正在运行的 Windows 软件进行实时进程捕获,包括模块元数据、可读内存转储、映射镜像选项、切割的运行时载荷和面向 Frida 的跟踪。 ### 重构与重建 - 架构移植工作区,提供准备好的源码树、x86/x64 到 arm64 风格的指导以及启发式或 LLM 辅助的可移植性说明。 - 重编译工作区,提供 Android Studio、Xcode、Node、Tauri/Electron 和面向 CMake 的模板。 - 重建计划、签名计划、补丁计划、运行间差异比较和差异驱动的补丁包。 - 针对 APK 签名、Electron 重新打包、Tauri 打包和补丁应用的有边界的包操作。 - PSARC 创建/重建工作流,保留压缩选择、块大小、文件顺序和可编辑的提取覆盖层。 - 源码优先的浏览器工作区,用于查看和编辑恢复的文件、清单、归档、可执行文件、JSON 资源、PARAM.SFO 和 hex/base64 节点。 - 精选的输出视图,带有可选择的预设、包含/排除桶、自定义文件夹映射、引用或复制模式、分析器包含/排除规则,以及用于更整洁的操作员运行文件夹的运行输出预算。 - 当直接源码恢复效果不佳时,可选的 GPT-5.5/GPT-5.4 辅助逼近。 有关更易于扫描的矩阵,请参阅 [docs/supported-formats.md](docs/supported-formats.md)。 ### 接口 - PyQt5 桌面 GUI,用于报告、构件、恢复的源码和图形驱动的枢纽分析。 - 专用的 GUI 界面,用于函数证据、恢复质量、精选输出浏览、后台/桩任务、实时 LLM 状态和源码优先的文件编辑。 - CLI,用于分析、运行检查、实时进程捕获、源码浏览/编辑、架构移植生成、配置文件、比较、补丁包创建、打包操作、MCP 启动详情和工具安装。 - MCP 服务器,将分析、图搜索、重构、验证、差异比较、重建和打包工作流暴露给外部 LLM 客户端。 - 保存的 JSON 配置文件,用于可重复的分析和包操作运行。 ## 快速入门 ``` python -m pip install -e . re-pro analyze path\to\target.exe -o analysis_output ``` 如需更完整的本地设置: ``` re-pro install-tools re-pro analyze path\to\target.exe -o analysis_output --external-tools ``` ## Windows 版本 Windows 发布归档包含一个编译好的可执行文件及便捷的包装脚本: - `re-pro.exe`,用于 CLI、包操作、MCP 服务器和 GUI 启动器。 - `re-pro-gui.cmd`,用于启动 `re-pro.exe gui`。 - `re-pro-mcp.cmd`,用于启动 `re-pro.exe mcp-server`。 要在本地构建 Windows 发布构件: ``` C:\path\to\python311.exe -m venv .release-venv .\.release-venv\Scripts\python.exe -m pip install -e . pyinstaller build .\scripts\build_windows_release.ps1 -Python .\.release-venv\Scripts\python.exe ``` ## CLI 分析目标: ``` re-pro analyze path\to\target.exe -o analysis_output ``` 使用外部工具、源码美化、Codex OAuth LLM 支持和移植指导运行高产量的分析: ``` re-pro analyze path\to\target.exe -o analysis_output --external-tools --beautify-frontend --llm --llm-auth codex-oauth --llm-model gpt-5.5 --llm-reasoning high --port-target-arch arm64 --port-mode hybrid ``` 检查已完成运行的恢复质量、证据图、函数证据页面和桩消除目标: ``` re-pro inspect-run path\to\analysis_run --query Widget --limit 20 ``` 在保留完整原始运行的同时,生成更整洁的面向操作员的输出树: ``` re-pro analyze path\to\target.exe -o analysis_output --output-profile source-first --output-view-mode reference re-pro analyze path\to\target.exe -o analysis_output --output-profile custom --output-include reports,recovered_sources,usability --output-exclude logs --output-folder-map recovered_sources=src/recovered re-pro analyze path\to\target.exe -o analysis_output --analyzer-exclude ghidra,jadx --output-max-run-mb 2048 --output-max-artifacts 500 ``` 比较两次现有的运行: ``` re-pro compare-runs path\to\base_run path\to\head_run -o diff_output ``` 从两次运行中创建并应用补丁包: ``` re-pro create-patch-bundle path\to\base_run path\to\head_run -o patch_bundle re-pro package-action --workspace-root path\to\run\porting\recompile --ecosystem patch --action apply-bundle --patch-bundle-path patch_bundle --target-root path\to\target_root ``` 运行包重建或签名操作: ``` re-pro package-action --workspace-root path\to\run\porting\recompile --ecosystem electron --action repack re-pro package-action --workspace-root path\to\run\porting\recompile --ecosystem tauri --action repack re-pro package-action --workspace-root path\to\run\porting\recompile --ecosystem android-gradle --action sign-apk --artifact-path app.apk --keystore-path debug.keystore --key-alias androiddebugkey ``` 创建或重建 PSARC 归档: ``` re-pro package-action --workspace-root path\to\workspace --ecosystem archive --action create-psarc --target-root path\to\assets --output-path out\assets.psarc --compression zlib --compression-level 9 --block-size 0x10000 re-pro package-action --workspace-root path\to\workspace --ecosystem archive --action overlay-rebuild --artifact-path base.psarc --target-root path\to\edited_extract --output-path out\patched.psarc ``` 通过分析和文件浏览器可进行 PSP PBP/DATA.PSP/DATA.PSAR 处理: ``` re-pro analyze path\to\EBOOT.PBP -o analysis_output --external-tools re-pro browse build path\to\analysis_run --rebuild re-pro browse write path\to\analysis_run node_00042 --mode json --content-file edited_PARAM.SFO.json re-pro browse patch path\to\analysis_run node_00043 --offset 0x20 --hex "00 00 00 00" ``` `pspdecrypt` 用于 DATA.PSP 解密和 DATA.PSAR 提取。`psp-packer` 用于在保存编辑过的解密载荷时进行 DATA.PSP PRX 打包。DATA.PSAR 重新打包/加密通过 `RE_PRO_PSP_PSAR_PACK_CMD` 暴露,因为没有可用的通用 PSAR 重新打包器。 加载额外的本地分析器插件: ``` re-pro analyze path\to\target.exe -o analysis_output --plugin-dir path\to\plugins ``` 附加到实时进程或按进程名捕获: ``` re-pro live-process list --query pcsx2 re-pro live-process capture --process-name pcsx2-qt.exe -o analysis_output\pcsx2_live --include-images re-pro analyze --live-attach --live-process-name pcsx2-qt.exe -o analysis_output ``` 为现有运行构建并编辑源码优先的浏览器工作区: ``` re-pro browse build path\to\analysis_run --rebuild re-pro browse read path\to\analysis_run node_00042 --mode json re-pro browse write path\to\analysis_run node_00042 --mode text --content-file edited_file.cpp re-pro browse patch path\to\analysis_run node_00043 --offset 0x120 --hex "90 90" ``` 从现有运行生成架构移植工作区: ``` re-pro architecture-port path\to\analysis_run --source-arch x86_64 --target-arch arm64 --mode hybrid ``` 保存、加载和检查可重复的配置文件: ``` re-pro analyze path\to\target.exe -o analysis_output --save-profile "Deep native pass" re-pro profiles list --query native re-pro analyze --profile "Deep native pass" ``` ## 工具链 安装本地逆向工程依赖项: ``` re-pro install-tools ``` 该工具链界面包含对 Ghidra、rizin、radare2、JADX、apktool、ILSpy、.NET 工作流、面向 Frida 的运行时跟踪以及 RE-Pro 分析和重建路径所使用的辅助运行时的支持。 如需更丰富的运行时插桩: ``` python -m pip install frida frida-tools re-pro analyze path\to\target.exe -o analysis_output --runtime-trace ``` 用于游戏流水线中可选的 NVIDIA GDeflate 恢复: ``` python -m pip install nvidia-nvcomp-cu12 ``` 对于远程符号获取,RE-Pro 默认使用 Microsoft 的公共符号服务器。要覆盖或扩展服务器列表: ``` set RE_PRO_SYMBOL_SERVERS=https://msdl.microsoft.com/download/symbols/;https://your-symbol-server.example/symbols/ ``` ## GPT 和 Codex 重构 RE-Pro 可以通过普通的 API 密钥或通过 Codex CLI/Desktop 写入的 Codex ChatGPT OAuth 令牌缓存来调用 OpenAI 模型。默认的 `--llm-auth auto` 模式首先使用 `OPENAI_API_KEY`,然后回退到 `CODEX_AUTH_JSON`、`CODEX_HOME\auth.json` 或 `~\.codex\auth.json`。 API 密钥模式直接使用 OpenAI Responses API。Codex OAuth 模式通过 shell 调用 `codex exec`,以便 Codex CLI 处理 ChatGPT 令牌刷新和后端访问;在使用 `--llm-auth codex-oauth` 之前,请先安装 Codex 并登录(`npm install -g @openai/codex`,然后运行 `codex login`)。 使用 API 密钥运行 GPT 辅助的重构: ``` set OPENAI_API_KEY=... re-pro analyze path\to\target.exe -o analysis_output --llm --llm-model gpt-5.5 --llm-reasoning high --llm-background --llm-task "Focus on updater and IPC logic" ``` 对于希望将模型的 Markdown 摘要立即同步到终端日志中的交互式运行: ``` re-pro analyze path\to\target.exe -o analysis_output --llm --llm-foreground --llm-model gpt-5.5 ``` 通过 Codex OAuth 而不是 API 密钥运行: ``` re-pro analyze path\to\target.exe -o analysis_output --llm --llm-auth codex-oauth --llm-model gpt-5.5 --llm-reasoning xhigh ``` 使用自定义的 Codex 认证缓存: ``` re-pro analyze path\to\target.exe -o analysis_output --llm --llm-auth codex-oauth --codex-auth-json C:\Users\you\.codex\auth.json ``` 仅在恢复效果不佳时自动触发 GPT: ``` re-pro analyze path\to\target.exe -o analysis_output --llm-auto --llm-background ``` 显式设置模型、推理、详细程度和输出限制: ``` re-pro analyze path\to\target.exe -o analysis_output --llm --llm-model gpt-5.5 --llm-reasoning medium --llm-verbosity medium --llm-max-output 128000 ``` 禁用自主依赖安装或构建检查: ``` re-pro analyze path\to\target.exe -o analysis_output --llm --llm-no-install --llm-no-build-checks ``` 对于当前的 GPT-5.5/GPT-5.4 级别模型,支持的推理值为 `none`、`low`、`medium`、`high` 和 `xhigh`。GUI 暴露了相同的模型、认证、推理、详细程度、输出 token、后台任务、依赖安装和构建检查控件。 ## MCP 通过标准 I/O 将 RE-Pro 作为 MCP 服务器运行: ``` re-pro mcp-server --transport stdio ``` 或者通过专用入口点: ``` re-pro-mcp --transport stdio ``` 对于支持 HTTP 的 MCP 客户端: ``` re-pro mcp-server --transport streamable-http --host 127.0.0.1 --port 8000 ``` 要打印确切的 MCP 客户端 JSON,或在后台启动 MCP 服务器并写入客户端配置: ``` re-pro mcp-info --transport streamable-http --host 127.0.0.1 --port 8000 --start ``` MCP 接口暴露了以下功能: - 通过 `analyze_target` 执行分析。 - 通过 `list_analysis_runs`、`read_report`、`read_analysis_index`、`search_analysis_index` 和 `get_index_entity` 进行运行发现和检查。 - 通过 `list_artifacts`、`list_recovered_sources` 和 `read_output_file` 浏览构件和恢复的源码。 - 通过 `prepare_recompile_workspace`、`inspect_toolchains`、`install_project_dependency`、`run_project_command`、`write_reconstruction_file` 和 `validate_reconstruction_file` 准备和验证重建工作区。 - 通过 `compare_analysis_runs` 进行运行间比较。 - 通过 `create_patch_bundle_from_runs` 创建补丁包。 - 通过 `run_packaging_action` 执行包重建、签名和补丁。 - 通过 `approximate_source_with_sampling` 进行客户端采样工作流。 这使得 MCP 成为直接 API 集成的真正替代方案:外部 LLM 可以检查图、浏览证据、编写有根据的逼近、在本地验证它们,并通过 RE-Pro 自己的执行界面驱动重建步骤。 ## GUI 使用以下命令启动桌面 GUI: ``` re-pro-gui ``` 或者在此仓库的 Windows 环境下: ``` launch_gui.bat ``` GUI 包含用于 Ghidra 和外部工具任务、前端美化、精选输出视图、Codex/API 密钥 LLM 设置、架构移植、运行时跟踪、实时进程附加、配置文件保存/加载、带有确切 JSON 的 MCP 服务器启动、打包操作、工作区浏览以及报告/构件/源码检查的控件。 ## 输出 每次分析运行都会写入一个带有时间戳的文件夹,其中包含: - `report.json` - `report.md` - `analysis_index.json` - `analysis_pipeline.json` - 恢复的源码和提取的构件 - 移植指导和准备好的源码包 重编译模板和清单 - 恢复质量、证据图、离线证据图浏览器、函数证据页面和桩消除清单 - 在 `operator_view` 等文件夹下的可选精选操作员输出视图 - 可选的差异、补丁和打包输出 - 可选的 `llm_assist`、`mcp_reconstruction`、`runtime_trace`、`live_process`、`browser_workspace` 和前端 source-lift 输出 ## 插件 当 `plugins/` 目录存在时,RE-Pro 会自动从 [plugins/README.md](plugins/README.md) 加载本地分析器插件。可以通过 `--plugin-dir` 传递额外的插件目录,并且打包的插件可以在 `re_pro.analyzers` 下注册入口点。 ## 重要限制 目前不存在针对任意原生二进制文件的通用、无损反编译器。 对于 C、C++、Rust、Go 和其他被剥离的原生目标,RE-Pro 可以进行分类、提取符号、恢复相邻构件、驱动专业工具并帮助重建合理的项目结构,但它无法保证恢复原始源码树,除非二进制文件或包中确实发布了该信息。 Electron 和 Web 风格的应用仍然是文件名和源码恢复 yield 最高的目标之一,因为它们通常会发布: - `app.asar` 或解压的 JS bundle - `package.json` - 包含 `sources` 和 `sourcesContent` 的 source map - 嵌入在构建元数据中的原始相对文件路径 安装程序包装的应用通常应首先解包。RE-Pro 会检测常见的 Windows 和 Apple 打包包装器,并能在深入分析之前提取嵌套的有效载荷,如 `.exe`、`.dll`、`.app`、`app.asar` 和 source map。
标签:APK分析, CTF工具, DAST, DEX反编译, DLL 劫持, GPT辅助, GUI应用, iOS逆向, Mach-O, MCP服务, PE分析, PyQt5, Python, URL提取, 二进制分析, 二进制提取, 云安全监控, 云安全运维, 云资产清单, 反编译, 图关联分析, 大语言模型, 恶意软件分析, 无后门, 格式感知, 源码恢复, 漏洞搜索, 签名与补丁, 调试插件, 软件重构, 逆向工具, 逆向工程, 重建工作流, 静态分析