所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
AI 管理

REA 调查:AI 辅助逆向工程的工作原理

什么是 REA——为什么人们关注它?

你可以每天使用一个应用程序,而不知道它的功能在表面下是如何工作的。REA 为 AI 助手提供了一种方式来调查这种行为——即使原始源代码不可用。

Person using a magnifying glass to investigate something closely

REA (Reverse Engineer Anything) 是位于 morluto/rea 的开源项目,它将 AI 代理连接到软件分析工作流。它通过命令行界面——键入的终端命令——和兼容 AI 应用程序的工具服务器公开分析操作。代理是一个可以在多步骤任务中使用工具的 AI 应用程序。REA 提供对分析工具的访问,而不是底层 AI 模型。

这种区别很重要:调查已完成的应用程序、编写类似的实现和恢复其原始源代码是不同的成就。REA 的有用性取决于收集的证据、应用的检查和保留的责任。”Anything”是项目的名称,而不是保证每个产品都可以被忠实地重新创建。

逆向工程:从成品程序中学习

逆向工程意味着通过检查成品来了解某物的工作原理。想象一台没有原始设计图纸的机器:检查其零件和行为可以支持新的设计,但不能给你设计者的原始图纸。同样,理解软件的行为不能恢复开发人员编写的源代码。

Person using a wrench to investigate something closely

对于本机可执行文件(程序的处理器就绪形式),编译器将源代码转换为机器指令。这些是处理器理解的操作。编译还可以优化程序,在保持其预期行为的同时重新排列或组合工作。结果是可执行软件,而不是源项目的压缩存档。

反汇编将机器指令呈现为可读的汇编。反编译更进一步,推断出称为伪代码的更高级别的类似源代码的逻辑。Ghidra 等工具提供两种视图:

1) Forward production path:
Original source
       ↓
Compile / optimize
       ↓
Native executable
2) Separate analysis path:
Native executable
       ↓
Disassembly / decompilation
       ↓
Assembly / inferred pseudocode
  Original names, comments and structure may be missing
       ↓
Behavior to verify

本机代码情况:编译生成可执行文件;分析推断出可读视图和行为以进行验证。不保证存在返回原始源文件的反向路径。

信息丢失是不均匀的。注释和许多名称可能会消失,而文本字符串、某些名称和描述性元数据会保留。优化可能会使熟悉的源结构难以识别。不同的源实现也可以产生相似的机器行为,因此合理的重建不必与程序员的原始表达相匹配。

并非每个应用程序都是本机机器代码。打包的 JavaScript 可能包含可读的源代码或为分发而缩短的最小化代码。阅读包中已存在的类似源代码的材料不同于从机器指令推断伪代码。幸存下来的内容决定了分析可以回答哪些问题。

REA 如何将问题转化为证据循环

该项目的 DX-Ball 调查始于一个实际问题:砖块的水平屏幕位置如何决定声音平移,即左右音频之间的平衡?第一个反编译器视图显示了一个转换数字的调用,但遗漏了其背后的输入和计算。这不足以解释声音的位置。

指令视图揭示了缺失的输入和算术运算。检查调用它的函数表明输入是砖块的屏幕坐标。读取存储的值提供了计算的固定数字和缩放平移的设置。

结果是一条具体规则:在通常的缩放下,屏幕中心映射到居中平移,而任一侧的位置将平衡向左或向右移动。重建项目随后可以用 C 语言编写该规则,并将其与原始函数进行比较。

Presenter explaining a software workflow with connected process blocks

四个角色使该调查成为可能。

  • 您设置授权问题。
  • 代理选择后续问题并解释结果。
  • REA 提供工具访问权限并返回证据。
  • 分析引擎或解析器检查目标工件——正在检查的文件或包。

原生引擎包括 Ghidra、Hopper 和 IDA。

该连接使用模型上下文协议 (MCP),这是 AI 应用程序访问外部工具和系统的标准方式。REA 的 MCP 服务器是公开这些操作的软件,而不是您必须租赁的机器。技能为代理提供调查说明;服务器提供对操作本身的访问。核心交换如下所示:

Your feature question
         ↓
Agent
         ↕ MCP
REA tool server
         ↕
Analysis engine / parser
         ↕
Target software

请求向目标传输;证据返回给代理,代理使用它来选择下一个问题。随着调查的进展,交换重复进行。

代理协调这些后续问题,并将返回的代码和引用连接到解释中。证据记录标识文件和代码位置,将观察与推论和未解决的发现分开。因此,审查者可以将解释追溯到其支持材料。代理也可能起草候选代码和测试,作为与确定原始代码功能分开的步骤。

对于任何目标,区分静态检查(在不运行程序的情况下读取工件)和运行时观察或交互(在运行时检查它)。该检查发生的位置也与模型处理其发现的位置分开。如果代理使用托管模型,返回的结果可能会离开分析机器。

REA 可以检查哪些类型的软件?

可见性取决于目标。Electron 使用网络技术打包桌面软件,而 .NET 和 Android 代表具有不同分析路径的不同应用程序系列。每个都公开不同的信息,如表所示:

目标可以揭示的内容条件或边界
⚙️ 原生二进制文件指令、推断的伪代码、保留的字符串、调用和引用深度分析使用 Ghidra、Hopper 或 IDA 等引擎;输出不是原始源代码。
📦 JavaScript / Electron打包的模块、导入、应用程序关系以及在存在时将分发代码链接到源的源映射内置静态检查;缩小和未解决的关系可能会限制解释。
📱 .NET / Android.NET 元数据和指令比原生机器代码更接近源;Android 包声明和反编译方法基本 .NET 检查是内置的和静态的;Android 方法分析可能需要 JADX 等额外工具。
🌐 浏览器可见网站交付的页面结构、脚本和观察到的请求/响应授权观察通常不会揭示私有后端实现。

REA 文档涵盖了这些类别之外的更广泛的工件覆盖范围。查看官方目标概览和当前文档:要求因引擎、主机平台、目标和版本而异。这些描述了可用的检查工作流程,而不是每个目标的已验证重建。

令人信服的演示不等于经过验证的重建

公开演示能更具体地展示REA的功能。在一个在线分享的计算器重建项目中,AI辅助分析生成了GNOME Calculator的Python版本。除了这样的可见重建外,更狭隘的项目会将重建的计算与原始版本进行直接比较。

公开演示——二手报告
重建版本与GNOME Calculator相似,并匹配了基本算术结果。报告的调整大小问题暴露了一个可见的不匹配,而成功的算术检查无法捕捉到这一点。

项目报告的功能重建
DX-Ball展示报告了一个位置到声音平移函数的3,205个原始x86比较案例,加上使用历史编译器匹配的编译字节。

计算器演示了可见的重建;DX-Ball记录了特定计算的检查。每个结果回答了不同的问题。

Illustration of a person circling the first item on a large verification checklist

对于DX-Ball,比较涵盖了屏幕位置和多个平移强度。它们将C函数的返回值与执行原始指令的返回值进行了比较。使用历史编译器编译该C代码也再现了该函数的字节。这是两个不同的检查:在测试输出上的一致性和在编译函数上的一致性,无需程序员的原始源代码。

GNOME Calculator还具有高级、财务和编程功能。简单的算术比较使这些功能未被评估,而不是显示它们在重建中是否有效。其源代码是公开的,因此当源代码审查回答您的维护问题时,它可能是更直接的起点。有用的进展是从视觉相似性到选定的行为检查,然后对您需要的行为进行系统比较。

“任何事情”承诺的局限性

缺少源代码上下文会使组件难以解释。优化可能会隐晦其逻辑,而混淆则故意使代码更难理解。外部依赖造成另一个差距:某些执行路径需要在调查期间不可用的输入、服务或条件。即使进行仔细分析,当功能依赖于所检查组件之外的行为时,也可能无法解决边界情况。

一个独立的制衡来自Ishank Choudhary在2026年10月14日发布的报告,涵盖REA 6.4.0。他发现了有用的Electron应用程序结构,但遗漏了预加载连接:连接Electron页面与桌面端功能的桥接代码。他测试了没有代理或本机分析引擎的静态工具;这些发现涉及该版本和工作流程,而非每个当前版本。

Robot beside a warning symbol illustrating the limits of AI-assisted tools

该报告还描述了因结果预算(保留输出的限制)而从应用程序摘要中省略的关系。某些事实保留在文件级别,而其连接未出现在摘要中。没有匹配的已完成扫描因此意味着保留的分析未找到该关系,而非该功能不存在。其覆盖范围限制解释了这一遗漏。

这项工作始于设置分析引擎并为其提供所需的处理能力和内存。模型使用带来了自己的考虑因素:上下文决定了它一次可以考虑多少材料,而令牌是它处理的文本单位。重复查询增加了工作量,然后是测试和首次输出后的人工修复。实际账单、硬件需求和完成时间取决于目标和问题。衡量REA对速度或质量的自身贡献需要进行对照比较。

超越复制应用的有用应用

对于开发人员、自托管者和迁移团队,价值通常在于回答特定的维护或兼容性问题。以下场景仅供参考,不是本发布者的经过测试的部署或结果。

🛠️ 开发人员/维护者

维护者比较旧版实用程序的两个授权版本时,可能会询问为什么导入结果发生了变化。REA 可以帮助定位解析逻辑并指导回归检查。如果完整的源代码已经回答了该问题,请从那里开始;否则,根据更改的行为验证推断的原因。

🏠 自托管者

自托管者使用旧本地文件格式时,可以使用 REA 来理解其字段。这些发现可以帮助定义独立实现的兼容性桥接。专有依赖的合法即插即用替代品仍需要测试未记录的情况并检查适用的权利。

💼 业务/迁移团队

迁移团队可能需要在委托实施前了解是否可以支持所需的导出行为。REA 可以帮助建立技术可行性并阐明需要构建的内容。该发现可以为投资决策提供信息,而交付估计、支持承诺和完全兼容性需要进一步评估。

教育和授权安全研究可以使用相同的方法。在从解释转向进一步行动之前,请定义可以检查、运行或共享的内容。该范围即使在技术问题看起来很直接时也会管理调查。

技术访问不能解决授权、隐私或信任问题

检查文件的权限可能与运行文件、观察其流量、发布发现或重用受保护材料的权限不同。权利取决于适用法律和合同:条件互操作权(包括美国的权利)不是全球规则,拥有副本不授权每项操作。

Person beside a rules document and a warning sign

REA的MIT许可证涵盖REA编写的代码,不涵盖目标应用程序、受保护资产或自动生成的输出。商业分析引擎需要自己的许可证。负责任使用免责声明定义了预期用途和社区支持边界,不修改MIT;恢复的源代码不会自动成为开源或可重新分发的。

⚠️ 警告:隐私和执行风险

本地分析可能会将发现结果(包括代码、凭证或个人数据)发送到代理的模型提供商。在分析机密目标之前,检查出站数据和提供商条款。REA不是沙箱:静态解析可能会暴露工具漏洞,而运行或与目标交互可能会改变文件或影响账户和服务。审查实际操作和隔离,而不仅仅是工具运行的位置。

使用官方软件包和更新源,但也要审查依赖项、生成的输出、维护所有权以及如何获得修复。对供应商软件、开源项目和AI生成的替代品应用相同的审查:官方来源、价格、源代码可用性或从源代码构建不能替代清晰的来源和审查历史。

REA对软件所有权和云的意义

Developer presenting a code window connected to an API cloud

重建软件一次不能为其未来提供资金。必须有人持续修补漏洞并保持兼容性。支持用户和开发产品也需要持续工作。更便捷的调查可能补充专家工作;这些示例并不表明开发者或付费软件会过时。可靠的更新和负责任的支持仍然是选择产品的原因,即使其实现变得更容易理解。

供应商可以通过将更多功能转移到仅远程交付来做出响应,但此处的证据并未确立REA驱动的趋势。技术区别是客户端与服务器:浏览器接收界面代码和响应,而服务器端实现通常保留在运营商处。

Browser / client: delivered UI and scripts
Inspectable to the extent delivered / authorized
                   ↕
           Requests / responses
                   ↕
Server: application logic and database
Behavior observed ≠ exact private source revealed

可见性边界,而非完整安全边界:浏览器资源和响应可以被检查;后端代码通常保持远程。暴露的数据和其他安全问题仍然可能发生。

这些API响应——与服务交换的数据——可能会充分揭示功能的行为以告知新的实现。该路线依赖于可观察的输入和输出,而不是对后端代码的访问。保持代码远程也不会消除错误、暴露的数据或授权调查的可能性。

使用SaaS(软件即服务),供应商运营该应用程序。

  • 自托管授权应用程序使您对部署有更多控制。然后您需要负责修补和管理访问。
  • 备份、监控和恢复也成为保持该应用程序运行的一部分。

AlexHost Ubuntu VPS是已审查应用程序或兼容性桥接的一个基础设施选项。完全root访问权限使您能够控制客户操作系统。它不会自动保护应用程序或使外部模型处理私密。

要点:更容易的调查,而非自动恢复

一个可识别的计算器窗口可以是一个有希望的第一个结果。接下来的问题是你需要的行为是否已被检查,以及谁将维护它。REA 有助于调查该行为;实现、验证和可靠操作仍然是独立的工作。

如需深入了解,请从官方 REA 项目及其 DX-Ball 展示开始。专注于一个小的、经过授权的问题和答案背后的证据。这比询问 AI 是否可以复制整个产品是一个更有用的起点。