本文的所有内容都可以简化为:向AI说:帮我安装REA,然后NXxxx。
本文的NX即:ni-xiang。
Rstudio一直以来只有英语和法语2个语言选项,虽然我英语已经用习惯了。但最近看到REA比较火,就想着NX一下给它增加一个中文的选项玩玩。
一、什么是NX
软件NX工程(Software Reverse Engineering)是指在没有源代码的情况下,从已经编译好的可执行程序(如 .exe、.apk、.so 等二进制文件)出发,通过反汇编、反编译、动态调试等技术手段,反向推导出软件的运行逻辑、核心算法、数据结构或通信协议的过程。

这两天 PHP 和 Java 也出了超严重的漏洞:
- PHP:影响全球约70%的网站,量级达"基础设施级"
- 全球网站占比:PHP支持全球约70%的网站(Wiz结论);W3Techs实际统计为69.3%(非75%)。
- 受影响规模:定性为"千万级"基础设施级事件:超130万个网站直接易受攻击,2260万个实例暴露在风险中。两个CVE(CVSS 4.0均9.2)为use-after-free漏洞,近十年所有PHP版本(回溯至5.4)均受影响。
- 修复盲区:Censys识别的约260万台PHP主机中,约150万台无对应补丁(多为EOL版本)。
- Java:捆绑中间CA证书被入侵,波及主流JDK;Java服务漏洞率居各语言之首
- 核心组件普及率:CVE-2026-91403量化数据少,EPSS<1%、未入KEV。本质是Java信任的eMudhra中间CA证书被入侵,主流JDK发行版均受波及,属信任链问题而非代码执行漏洞(CVSS 3.1为9.1)。修复:更新,或替换
blocked.certs屏蔽受损证书。 - Java生态整体漏洞率:Datadog《DevSecOps 2026》显示59%的Java服务存在可利用漏洞,各语言中最高(.NET 47%、Rust 40%)。深信服"Java占易被忽略漏洞42.5%"未能公开验证,引用需核实。
- Tomcat的市场地位:CVE-2026-101296影响11.0.x / 10.1.x / 9.0.x主流版本线。其"占所有网站约0.1%"未能直接验证,但Tomcat占据约70%的Java Web容器市场份额,处于绝对主导地位。
- 核心组件普及率:CVE-2026-91403量化数据少,EPSS<1%、未入KEV。本质是Java信任的eMudhra中间CA证书被入侵,主流JDK发行版均受波及,属信任链问题而非代码执行漏洞(CVSS 3.1为9.1)。修复:更新,或替换
虽然这些编程语言的漏洞我们难以避免,但这也提醒我们,平常使用AI生成代码时,不能只注重功能实现,性能和安全性也需要格外关注。
二、什么是REA
🔗地址:https://github.com/morluto/rea
REA (Reverse Engineer Anything) 是一个基于 MCP(Model Context Protocol,模型上下文协议) 和命令行(CLI)的 AI NX工程工具包。它能将 AI 编程助手(Agent)与底层NX分析工具连接起来,在不具备源代码的情况下,从应用行为一路分析到底层原生二进制文件。
它的本质可以拆解为以下三层架构:Skill(指令集) + 内置静态解析引擎 + 外部工具桥接层(MCP Server / CLI)。

能力总结:
| 分析目标类型 | REA 提取并返回的内容 | 所需环境与外部工具依赖 |
|---|---|---|
| 原生二进制文件 (Native Binaries) | 伪代码、汇编代码、字符串、符号、调用关系及交叉引用 | 需配合 Hopper、Ghidra 或 IDA Pro(也支持离线调用 GNU objdump 或 Rizin) |
| Rust / Go 编译产物 | Rust cargo-auditable crate 依赖树与版本;Go 编译器版本、模块与构建参数 |
内置静态解析(支持 ELF / PE / thin Mach-O),无需安装 Rust 或 Go 环境 |
| JavaScript / Electron 应用 | 模块结构、导入关系、Source Maps、路由、IPC 通信边界及原生插件关系 | 内置静态解析(直接分析解压目录或 .asar),无需原生反编译引擎 |
| 桌面应用安装包与资源 | 运行时候选文件、组件标记、Apple Bundle 结构、Plist 及提取的资源 | 内置静态解析 |
| GPU 代码与大模型文件 | CUDA/HIP 目标参数、保留的 PTX 文本;GGUF / safetensors 元数据与张量声明 |
内置静态解析(支持 ELF/PE/fatbin/CUBIN/PTX 及模型头文件) |
| 游戏与打包程序 | Unity IL2CPP 元数据、Godot PCK 归档清单与提取、PyInstaller 提取的字节码 |
内置静态解析,无需对应引擎环境 |
| .NET 程序集 / Flutter | .NET 元数据与 CIL 指令;Flutter Dart 快照哈希、各 ABI 库摘要与引擎构建信息 | 内置静态解析 |
| Android 生态 (APK / 设备) | 清单声明、反编译类与方法、资源表;通过 ADB 抓取设备进程、日志与屏幕 | 静态需 Headless JADX + JDK / Apktool;动态需 adb |
| Web 网页与网络抓包 | 页面结构、脚本、网络请求观测、HAR/SAZ 载荷解析、PCAP 流量统计与协议分布 | 网页分析需 Chrome 系浏览器;流量分析需 tshark / mitmdump |
| 固件、崩溃记录与进程行为 | 固件分区提取;Linux 崩溃寄存器/线程状态;终端 PTY 交互、文件系统观测对比 | Linux 环境下配合 Binwalk / Unblob、pwntools、GDB 等 |
三、安装
以 windows Antigravity CLI为例。
安装前:只有一个我自己写的skill(rasterio-pro)

nodejs版本:

命令行安装REA:
npm install --global rea-agents

rea-agents 已经下载完成,但其底层依赖的 frida 是一个原生扩展(Native Addon),必须执行内置脚本(node scripts/install.js)去下载或编译适合你系统平台的二进制动态库。由于较新版本的 npm 启用了安全策略(allow-scripts),默认阻止了未授权的包执行安装脚本;如果不补跑该脚本,后续运行 rea-agents 时大概率会报找不到二进制模块的错误。
执行带权限的安装命令:
bash
npm install --global --allow-scripts=frida rea-agents
rea作为node modules已经被安装在:
bash
%USERPROFILE%\AppData\Roaming\npm\node_modules\rea-agents

现在再来配置:
bash
rea setup
它可以自动检测已经安装的Agent。
下面的列表则是所有支持的Agent,包括Qorder、Kimi Code、work Buddy这些。

我这里选择Antigravity吧:键盘上下键选择,space(空格)选择,enter(回车)确定。
它做了几件事情:
-
备份Antigravity的mcp配置文件。
-
在mcp配置里面注册REA的mcp服务,让Antigravity能够直接通过协议调用 REA 的NX和解包工具。
-
安装REA的skill
以后我要GeminiNX的时候,它就会匹配到这个skill,然后按照skill里面的内容,通过mcp调用它的NX工具。

在agy里面就可以看到已经安装skill了:

Antigravity GUI里面也是共享配置的。
后面我就在GUI界面里面操作了。
四、RstudioNX
直接在Antigravity 里面使用Gemini 4 Argon(Pro订阅):
第一次prompt:
安装目录:D:\RStudio
这个软件官方只有英语和法语(设置里面就这两个选项)。
我想通过REA逆向,搞明白它的英语和法语切换逻辑,看看如何增加一个中文的选项,并实现所有界面的中文化。
包括一级菜单、多级展开菜单、设置页面、各个窗口等等。
第二次prompt:接受你的建议,开始吧
就2轮对话,基本就完成了。
后面改了2个Bug,回答了一些我的问题...
刚好全部完成后,我的Gemini 4 周额度只剩1%了(从100%开始用的):

虚拟机测试
虚拟机里面安装win11,没有python、nodejs等开发环境。
全新安装 R 和 Rstudio 进行测试。
运行:一键安装中文(Install).bat 脚本
✅成功:

Genimi如何使用REA进行NX
Gemini通过 REA(Reverse Engineer Anything) NX分析工具链,采用「由外向内、跨层取证」的方式,逐步解开了 RStudio 语言切换的底层机制。

RStudio 汉化实现
为了达成「不破坏官方英文(en)和法文(fr),在设置中原生增加第 3 个选项『中文 (简体)』,且一键安装/还原」的目标,在系统的 5 个关键位置实施了精准热补丁:

浅谈汉化技术
常见的汉化方法:
- 字符串替换:就是暴力替换,可能会把程序的变量名、函数名也给替换了
- 原生多语言体系挂载:本身已规范实现国际化(i18n)架构的软件,完全不需要暴力替换文本,只需向其现有的本地化管线中注入新的语言包。最稳定、没副作用。
- AST / 字节码重写:从语法树或中间指令层入手,能精准区分哪些是 UI 文本、哪些是逻辑变量,只改展示内容。精度极高不会破坏代码逻辑,但技术和NX门槛高。
- 操作系统无障碍 / 自动化接口接管:利用系统自带的辅助服务(如 Accessibility / UI Automation)读取控件上的文字,直接在界面上接管或覆盖内容。完全不碰原程序文件,但依赖系统支持且偶尔有响应延迟。
- 视觉 OCR 覆盖层:完全把程序当黑盒,靠后台实时截屏、OCR 识图翻译,再用透明置顶悬浮窗把中文贴在原文字上方。彻底零侵入、零崩溃风险,但额外消耗算力且可能闪烁。
- 网络中间人代理重写:针对界面文本从云端下发的软件,在本地挂代理劫持网络请求,把服务器返回的英文 JSON 数据改写成中文后再让客户端渲染。不改动本地程序文件,但后端接口变动时需重新适配。

当然还有很多方案,不一一列举了。
本文属于 「原生多语言体系挂载」+「AST / 代码结构级重写」的复合深度实现 ,其中以 AST / 代码结构重写为主导核心。
因为 RStudio 是一个典型的混合架构软件(Electron 外壳 + GWT 编译的前端 + C++ 后端),单一方法根本无法搞定,我们在不同的层级精准采用了不同的手段:
-
GWT 前端主界面(占代码量 95% 以上):AST / 代码结构级重写
- 前端是 Java GWT 编译出来的,而编译时官方只打包了英语和法语,没有留出外部语言包的挂载插槽。
- 所以利用
symbolMapNX还原出每个混淆函数的类名、方法名和上下文,精准区分出哪些是 UI 文本、哪些是系统内部 ID(如保留象限键名"Source"),然后在语法结构层将 5,900+ 个函数的返回值重写为动态分支(return $wnd.__zh ? '中文' : 原文)。
-
Electron 外壳层(原生顶部菜单、弹窗):原生多语言体系挂载
- RStudio 的 Electron 桌面端本身内置了标准的
i18next国际化架构,但官方在 Webpack 打包时把英文和法文内联打包了进去。 - 切入 Webpack 的资源注入点,向其现有的
resources: { en: ..., fr: ..., zh_CN: ... }本地化管线中挂载了完整的zh_CN语言字典。切换语言时,触发的完全是 Electron 官方的i18next.changeLanguage('zh_CN')原生管线。
- RStudio 的 Electron 桌面端本身内置了标准的
-
C++ 后端配置层(rsession 偏好设置):原生多语言体系挂载
- 在
resources/schema/user-prefs-schema.json中,向ui_language的合法枚举数组注入"zh_CN",让官方 C++ 层的偏好验证管线原生认可中文选项。
- 在
五、汉化脚本分享
地址:https://github.com/LingyunStudio/rstudio-zh
下载压缩包,运行一键安装脚本即可。
另:
脚本运行时做了什么?
- 利用 RStudio 自带的 Node.js 自动提权、自动备份原厂文件、对 C++ 配置 / GWT 前端 / Electron 原生层实施精准的 5 步无损热注入,并自动把系统语言切换为中文、清理浏览器缓存。整个过程约 3~5 秒 即可完成。
最后再分享一下之前写的一个音乐播放器:https://github.com/LingyunStudio/RustMusic

六、总结
我之前对Antigravity进行了汉化,使用Gemini 3.8 Flash就完成了。
同样对Rstudio汉化的时候,却不顺利,搞了很久都没完美实现。
今天使用REA,2轮对话就完成了。
同样是应用汉化:
Antigravity 是标准 Electron + React 架构,用 Gemini 3.8 Flash 在 Preload 阶段做 DOM 末端拦截(MutationObserver + 白名单隔离)即可轻松搞定;
而 RStudio 深度耦合了 C++、GWT 7.2 MB 混淆代码、.gz 缓存流优先机制与 Webpack 内联模块,常规替换必踩白屏与失效暗坑。
最终 Gemini4 Argon 依靠 REA 的跨栈NX能力(symbolMap 还原、依赖图剖析与 C++ 追踪),仅 2 轮对话便击穿黑盒,实现了方法级注入的"外科手术式"原生汉化。
怪不得REA从十月开始就迅速获得370k的star(已进入GitHub star排名前十),还是很厉害的。