Col-E/Recaf
GitHub: Col-E/Recaf
一款现代化的 Java 字节码编辑器,通过抽象编译细节简化了对 Java 应用程序的逆向分析与修改。
Stars: 7039 | Forks: 516
# Recaf [](https://discord.gg/Bya5HaA) [](https://codecov.io/gh/Col-E/Recaf)  [](CONTRIBUTING.md)

一个易于使用的现代 Java 字节码编辑器,它抽象了 Java 程序的复杂性。
## 下载
- [Launcher](https://github.com/Col-E/Recaf-Launcher)
- 使用说明可在 launcher 仓库中找到
- [快照版本](https://github.com/Col-E/Recaf-Launcher/blob/master/MANUAL.md)
- 查看 [CI actions](https://github.com/Col-E/Recaf/actions/workflows/build.yml) 获取构建产物
- [独立版本](https://github.com/Col-E/Recaf/releases) _(目前 4X 版本暂无)_
## 功能特性
- 轻松地从高层或低层视角编辑 Java 字节码(去除了繁琐的部分)
- Recaf 内的编辑功能抽象了编译后的 Java 应用程序的复杂细节,例如:
- 常量池
- 栈帧计算
- 必要时使用 wide 指令
- 以及更多!
- 易于使用的可导航界面,带有上下文敏感的操作
- 支持 标准 Java 以及 Android 应用程序
- 支持在多个反编译器之间切换,并完全开放其参数配置
- 内置编译器,允许重新编译反编译后的类,即使缺少某些引用的类(*当被支持时,支持程度可能因代码复杂度和混淆程度而异*)
- 拥有简单语法和支持工具的字节码汇编器
- 查看方法中任意位置的局部变量和栈值的状态
- 通过名称而非索引访问变量,以获得更清晰的反汇编代码
- 自动将 Java 源代码片段转换为字节码序列
- 搜索各种不同的内容:字符串/数字常量、类和成员引用、指令模式
- 用于反混淆混淆代码的工具
- 旨在崩溃逆向工程工具的特制类文件在 Recaf 中打开时会自动修补
- 特制的 jar/zip 文件会像 JVM 一样读取,绕过可能诱骗逆向工程工具显示错误数据的隐蔽技巧
- 支持自动重命名混淆的类及其成员
- 支持手动重命名类及其成员 *_(并将这些映射导出为多种映射格式,以便在其他工具中使用)_*
- 用于简化常见混淆策略的字节码转换器
- 通过 instrumentation 功能附加到运行中的 Java 进程
- 以及更多
完整的功能列表可以在 [用户文档](https://recaf.coley.software/user/index.html) 中找到。
## 脚本与插件
Recaf 通过模块化 API 暴露其几乎所有功能。可以通过脚本轻松自动化行为,或者在更复杂的情况下通过插件来实现。也可以通过插件添加额外功能,插件可以在提供挂钩的 API 中注册钩子。
要创建自己的脚本或插件,请参阅 [开发者文档](https://recaf.coley.software/dev/index.html),特别是 _"plugins & scripts"_ 章节。
## 命令行
Recaf 可以作为命令行应用程序运行,这在配合启动时提供的脚本时尤其有用。你可以通过传递 `--help` 作为应用程序参数来查看所有当前的启动参数。
## 开发环境设置
通过 `git clone https://github.com/Col-E/Recaf.git` 克隆仓库。
在 IDE 中打开项目,或使用 gradle 生成构建。
**IDE**:
1. 从 `build.gradle` 文件导入项目
2. 创建一个运行配置,主类为 `software.coley.recaf.Main`
**不使用 IDE**:
1. 运行 `gradlew build`
- 输出将位于:`recaf-ui/build/libs/recaf-ui-{VERSION}-all.jar`
标签:Amass, Android, ASM, DNS 反向解析, DSL, JS文件枚举, JVM, Kit, Recaf, URL提取, 二进制分析, 云安全运维, 云资产清单, 代码分析, 凭证管理, 反混淆, 反编译, 后台面板检测, 域名收集, 域名枚举, 字节码编辑器, 开源, 编译器, 网络安全, 蓝队工具, 误配置预防, 调试, 软件开发, 逆向工程, 隐私保护