js360000/RE-Pro
GitHub: js360000/RE-Pro
跨平台逆向工程工作台,将二进制分析、源码恢复、项目重建与 LLM 辅助移植整合为统一的 CLI/GUI/MCP 工作流程。
Stars: 2 | Forks: 0
# RE-Pro





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提取, 二进制分析, 二进制提取, 云安全监控, 云安全运维, 云资产清单, 反编译, 图关联分析, 大语言模型, 恶意软件分析, 无后门, 格式感知, 源码恢复, 漏洞搜索, 签名与补丁, 调试插件, 软件重构, 逆向工具, 逆向工程, 重建工作流, 静态分析