AWESOME REA · 专题综述

逆向工程万物:基于证据的软件重建综述

软件重建六个领域中的方法、证据与边界。

版本 1.0 · · Awesome REA 贡献者

借助 AI 编写的专题综述;无新增实验,未经同行评审。

53快照中的论文
6重建领域
8本综述对比案例
目录 · 15 节

摘要

逆向工程从不同证据重建不同对象:从图像恢复视觉布局,从交互推断规则模型,从二进制代码生成源码假设,或围绕保留的固件构建执行环境。本专题综述综合一个固定的 53 篇论文语料及八个有文档支持的项目案例,考察这些重建究竟能够确立什么。文献按网站、游戏、应用、二进制、固件和协议六个领域组织,比较观察权限、重建输出及验收判据。核心论点是:只有同时明确这三者,结果才可得到恰当解释。视觉相似、构建匹配、有限测试一致及服务成功启动,分别约束不同属性,不能合并为单一恢复分数。所选案例进一步说明,原始素材、先前源码接触、既有实现和云服务依赖如何塑造结果。跨领域来看,更清晰的评测有赖于明确记录所提供的信息、使用构建样例之外的检查,并分别报告结构、视觉和行为证据。本综述提供比较主张和识别未测试边界的框架,而非系统排名。[1] [2] [3]

1. 范围与审阅方法

文献讨论采用本版本固定的 53 篇论文语料。本节综合讨论公开重建案例能够为智能体辅助逆向工程提供何种证据。固定版本的目录包含 189 项资源,其中 56 项为案例。这里选取八例,比较输入、输出与检查方式,不据此估计成功率或对工具排名。传统的一致性反编译项目为评估较新的智能体辅助流程提供参照;被选入不代表使用了 AI 或 REA。

发现线索记录用于跟踪线索及审阅覆盖,不作为重建性能的样本。其中包含待核查报告、讨论和工具,因此列入记录的数量不等于独立验证的项目数量。所选八例用于在本次目录快照中进行有目的的对比,并不构成穷尽式或系统检索。

分析依据目录已有的来源审阅记录,包括固定修订的文档、实现与测试定义、使用前提及明确的限制。“来源已审阅”表示检查过支持材料,并不表示为本综述运行了原程序、重建实现或测试。作者报告的结果仍保留归因。构建步骤、测试定义和保存的通过结果,是不同的证据对象。

下文所称验收判据(oracle),指用于判断重建输出的规则、参照或测试。每个案例均区分可用输入、重建输出、验收检查及未测试部分,避免将中间步骤的成功悄然扩大为对整个产品的结论。来源修订与版本限制同样重要:项目名称不变时,后续修改仍可能改变目标、验证器或依赖。

有用的证据记录应区分已定义、满足执行条件、实际执行及通过的检查。缺失样本、关闭比较或缺少原始文件,都属于覆盖缺口,而不是成功结果。同样,编译与启动检查确立的性质不同于差分测试。在报告成功的同时列出跳过项与配置开关,有助于比较异质案例,也避免假定它们的统计分母可以互换。

2. 重建目标与证据

逆向工程始于信息缺口,但用于弥合缺口的产物差异很大。截图可以支持布局推断,执行轨迹可以约束行为,访问实现则可能揭示类型或依赖。因此,重建对象可能是页面、状态转移模型、带注释的伪代码,也可能是能够运行现有固件的环境。这些产物回答的是不同问题。因此,同一个术语可能涵盖视觉设计的逆向转换、隐藏规则推断,或围绕保留代码构建可执行的替代环境。可访问的输入与要求的输出必须一并明确。[7] [5] [10] [3]

一个反复出现的困难是欠确定性:不同实现可能解释相同观察。视觉相似无法确定业务逻辑,通过抽样执行不能恢复原始源码,有用的模拟环境也可能有意简化硬件。以下讨论区分三组概念:观察所得证据与额外提供的规范、重建与复用现有组件、测得的结果与该结果试图支持的更广泛主张。关键在于证据约束了哪些属性,以及哪些属性仍未检验。[11] [1] [12]

  1. 可用证据图像、观察、轨迹、二进制或源码;记录访问权限及额外上下文。
  2. 重建目标明确要生成的布局、代码、行为模型或执行环境。
  3. 验收判据明确参考对象、比较规则、测试输入及允许的近似。
  4. 受支持的主张报告哪些内容匹配、哪些内容被复用,以及哪些属性仍未测试。
这四个阶段是报告框架,不是通用重建算法。可用证据约束能够推断的目标,而验收判据决定目标的哪些属性实际接受了检查。

3. 网站:从外观到可观察工作流

截图到代码研究主要以渲染外观为参考。Design2Code 将视觉元素、布局指标与人工评估结合;Web2Code 则区分截图理解和 HTML 生成。DCGen 将截图分解为多个区域;ScreenCoder 则分离视觉定位、布局规划与代码生成。不过,生成的按钮外观正确,并不意味着它实现了任何动作。占位素材和自包含页面快照也会改变任务本身,因此应结合所提供的素材及参考数据构建方式理解视觉分数。[7] [13] [14] [15]

交互基准提供或推断额外证据。Interaction2Code 为单次转移提供前后状态;IWR-Bench 使用交互视频和带标注的回放序列。这些任务检验了静态截图之外的变化,但 IWR-Bench 明确允许用静态 JavaScript 数据模拟隐含的后端行为。UI2App 则要求模型从截图推断合理交互,并依据评分规则接受多种有效实现。复现已展示的转移,与构造符合设计的行为,是两类不同任务。单独完成其中任何一类,都无法确定原始服务端实现;跨路由状态也不应等同于跨会话持久化。[16] [17] [11]

ProgramDistill 将重点转向行为:被评测智能体通过结构化浏览器观察检查运行中的参考应用,提交代码则在新的验证环境中接受有依赖关系的工作流检查。Vision2Web 也测试工作流,但其全栈任务同时提供视觉原型和文字需求。Dashboard2Code 则在特定仪表盘框架中加入主动探索。文本、选择器、DOM 信息或明确需求的可用性,会改变需要推断的内容。因此,比较时必须区分观察权限与重建能力。工作流回放可以发现编辑未保存或动作序列错误,却仍无法保证未测试的数据库不变量或视觉保真度。[2] [18] [19]

4. 游戏:界面、规则与可执行世界模型

游戏重建包含应分别讨论的多个层次。SPRITE 将界面设计稿转换为可编辑的 Unity UI 素材,关注层级、视觉定位和基础交互。GameReplica 则要求智能体探索规则驱动的网页游戏,并生成可运行的 HTML 复刻。前者重建表现层,后者尝试通过交互推断规则。GameReplica 使用模型对规则、实现及视觉表现评分。两类任务都不能据此证明重建了商业原生游戏、原始素材或完整引擎。合理的界面、可玩的实现与忠实的规则集,是相互独立的成果,即使某个基准同时报告它们。[20] [21]

可执行世界模型提出另一种目标:恢复足以支持规划的状态转移和奖励行为。WorldCoder 在确定性的符号环境假设下,依据经验及规划约束修订 Python 模型。Code World Models 将文字描述、已记录轨迹与搜索引导的程序合成结合。Tycho 根据陌生游戏中的交互构建并检查程序化模型,但在游戏过程中可以修复模型、对部分预测保留意见,或绕过模型。这些设计把重建作为完成任务的手段。因此,仅凭游戏通关无法证明所学模拟器正确:智能体可能利用局部有效的近似,也可能依靠控制循环的其他部分成功。[5] [22] [23]

RevengeBench 将未知对象进一步限定为可执行决策策略,通过留出状态上的动作一致性和对抗价值进行评估。这区分了恢复对手策略与重建策略所处环境。在这些研究中,探索策略、符号状态或文字规则的可用性,以及测试状态的分布,共同决定任务难度。一个值得研究的方向,是在构建轨迹之外施加干预来评估模型,同时分别报告模型保真度与任务奖励。确定性简化环境和固定策略能够提供受控实验,但不能据此确立在随机、部分可观察或自适应游戏系统中的表现。[24] [5] [22]

5. 应用:恢复界面结构,而不预设业务逻辑已恢复

移动 GUI 研究说明,表示方式的选择会塑造重建结果。REMAUI 使用视觉、OCR 和布局启发式方法生成 Android 界面;UI2code 学习组件层级与骨架;ReDraw 则将组件识别与从界面样例中获得的合理层级结合。Pix2code 采用另一条路线:预测领域专用语言,再编译为平台 UI 代码。这些方法在视觉细节、层级和平台专属性之间作出不同取舍。输出可以加快实现,但组件或词元准确率并不是应用逻辑恢复程度的度量。多种层级可能渲染出相似屏幕,却在调整尺寸或交互时表现不同。[25] [26] [4] [27]

从单屏扩展到多屏,会引入独立的导航推断问题。DeclarUI 将组件提取和声明式代码生成,与经人工检查修正的页面转移图结合。人工贡献因此是方法的一部分,不能被视为自主恢复转移关系的证据。UIOrchestra 把布局描述、生成及视觉比较组织为协作智能体,但其研究输出是静态 React/CSS。来自移动界面的参考数据对是经人工修订的重建结果,并非原始应用源码。在与早期原生 Android 输出比较,或声称生成页面构成可执行原生应用时,这一区分尤其重要。[6] [28]

尚待解决的问题,是如何把界面恢复与独立规定的行为连接起来,而不悄然补造缺失信息。截图无法确定身份认证规则、同步机制、权限或屏幕之外的状态。导航图约束了部分转移,却仍留下业务语义问题。未来比较应明确哪些元素来自图像,哪些由人提供,哪些由生成器构造,并分别报告编译、视觉匹配和运行行为。产物可用性是另一维度:方法描述或发布承诺可以支撑文献讨论,却不能证明其完整实现已经接受检查或复现。[6] [28] [4]

6. 二进制:符号、源码假设与行为

二进制研究区分了辅助分析人员与生成替代源码两类目标。DIRE 根据反编译结果的词法和结构信息预测变量名;DIRTY 加入学习得到的类型及布局线索;ReSym 则通过跨函数推理减少符号与数据结构预测之间的冲突。这些方法恢复了有用的抽象,但名称和类型仍是受底层反编译器及训练分布制约的假设。预测相互一致,弱于它们与不可见源码一致的证据。这一区分具有实际意义:即使没有改变可执行行为,也没有生成可编译的替代实现,提高可读性仍可帮助分析。[10] [29] [30]

汇编到 C 系统对输出作出了更强的承诺。LLM4Decompile 同时研究从汇编生成代码和修订 Ghidra 伪代码;SLaDe 则将神经翻译与类型补全结合。基于执行的评测比仅比较文本更有约束力,但实验上下文至关重要。SLaDe 使用有限输入/输出测试选择候选,并在原始调用上下文中评估函数。因此,函数边界、外部声明、编译器设置和候选选择过程都参与形成了测量结果。通过测试的函数不应被理解为已恢复的完整程序,仅能重新编译也不足以证明语义得到保留。[31] [1]

DeGPT 展示了改写现有反编译输出的另一类风险:简化和命名可以帮助理解,启发式语义检查却可能漏掉有害修改。DecompileBench 把评测扩展到真实程序中的函数,并结合行为检查与可理解性评估,但有限的模糊测试覆盖和模型辅助判断仍是有边界的判定依据。因此,有用的比较应包含多个维度:符号合理性、结构可读性、编译情况、已测试行为及依赖保留情况。分别报告这些维度,比给出单一反编译分数更易解释。尤其应使用候选选择或修复过程之外的样例进行测试,以发现看似合理的错误。[32] [33] [1]

7. 固件:围绕保留的二进制重建执行环境

固件重托管通常保留目标二进制,并重建它所期待的环境。HALucinator 识别硬件抽象接口,以人工编写的处理函数替换它们,允许模型保真度随分析目标调整。Fuzzware 更接近内存映射 I/O,通过局部符号分析识别与固件逻辑有关的输入。两者都借助抽象,减轻完整模拟外设的负担。这种简化有利于测试,同时也界定了方法边界:省略硬件行为、时序或直接内存访问(DMA)可能改变可达执行,而分析环境中的崩溃未必能在真实设备上发生。[3] [34]

Linux 固件包含另一组依赖,包括文件、初始化进程、网络和内核服务。FirmAE 使用经验性干预克服执行故障,使选定的 Web 服务运行起来;FIRMWELL 通过初始化与分析恢复服务依赖;Penguin 则将针对目标的转换明确表示为可编辑配置。这些方法都试图让保留的软件能够接受分析,但成功标准不同。绑定 Web 端口、返回非空响应、通过配置的服务检查,是不同的观察,不能互换为“设备正常运行”的定义。执行行为被有意改变了多少,也必须纳入解释。[12] [35] [36]

核心研究张力在于可达性与保真度。宽松模型可能暴露更多代码,同时允许现实中不可能出现的输入;详细模型可能需要大量人工知识,却仍遗漏某种外设条件。有用的评测应把服务验收和发现的故障与明确记录的假设联系起来,并区分仅在模拟器中观察到的结果与真实设备检查。这也使负面结果具有信息价值:不支持的架构、不完整的解包、缺失的初始化和失败的外设模型,属于不同故障类别。任何一类重托管成果,都不能单独证明恢复了原始源码或重建了设备的全部功能。[34] [3] [35]

8. 协议:语法、语义与状态是不同目标

被动协议推断从报文中学习,而不观察实现。NEMESYS 估计单条报文内部的边界;NetPlier 利用多条轨迹之间的关系推断与类型有关的字段及聚类;BinaryInferno 将专门的检测器组合为部分格式描述。它们对明文、对齐、样本多样性和预先分组的假设各不相同。正确性的单位也会改变:边界匹配、完整分割的字段、正确聚类的报文,回答的是不同问题。分析人员提供的先验和使用真实标签进行的预处理,都应计入输入。即使无法识别全部语义或发现样本中不存在的报文,部分格式恢复仍可能有用。[37] [38] [39]

访问实现能够提供更强的约束,同时带来不同成本。BinPRE 观察经插桩服务器的执行,推断字段及选定语义类别;ICEPRE 沿具体解析路径运行,再通过符号重放进行语法推断;NetLifter 则需要带标注的 C/LLVM 输入,通过静态分析推导文法和跨字段约束。不能假定它们获得了相同证据并据此公平排名。它们也有不同盲点:未执行的路径、人工函数定位、实现忽略的字段,以及循环或校验和近似。模糊测试效果提升说明某项下游应用有价值,并不能证明已经重建完整且可互通的端点。[40] [41] [42]

状态机学习研究哪些报文序列会产生可区分的响应。StateInspector 将主动查询与运行时内存证据结合;BLE 自动机学习则通过预先定义的一组抽象协议动作与真实设备交互。二者都说明,状态覆盖取决于测试框架能发送什么、如何抽象输出,以及如何处理复位、时序和非确定性。这些方法不会自动恢复未知报文语法;反过来,格式推断也不会提供完整状态机。如何连接二者仍是研究问题:格式有效的报文可能不适合某个状态,而遗漏一种输入可能掩盖整条行为分支。[43] [44] [38]

9. 智能体基准:任务与访问条件

智能体基准把允许的调查过程纳入任务定义。CrackMeBench 在 shell 接口和时间预算下,要求对小型二进制挑战提交可由执行检查的解答。CREBench 则区分密码算法识别、信息提取、包装程序重建和标志恢复。被接受的输入、恢复的参数及替代包装程序,是不同的交付物。在这些受控任务上成功,提供的是关于相应交付物的证据,而非恢复完整应用或任意受保护二进制的证明。[45] [46]

SRE-Bench 使用私有编写的程序及其受保护变体处理数据污染问题,通过评测服务提供访问,而非公开发布任务;污染控制仍是作者所述的方法。Humans vs. Machines 在不进行动态执行的条件下研究静态理解与导航,其规模更大的二进制表示研究测量的是上下文容量,而非挑战求解准确率。因此,解读人类与智能体的比较时,除模型名称外,还需考虑先前源码接触和接口限制。[47] [48]

ProgramBench 采用另一条路线:智能体查询参考可执行程序并查阅文档,但在推断期间禁止二进制检查、反编译和互联网访问。生成测试在有限输入上评估替代程序。跨智能体研究的比较应记录工具权限、查询和资源预算、测试可见性及先前接触情况,再对齐要求提交的产物。根据黑盒查询重建行为,与识别秘密、解释静态代码或通过反汇编恢复源码,并不是同一任务。[49]

10. 代表性研究及其评测边界

下表比较研究设计,而非分数。每行说明方法获得什么、生成什么、如何评估输出,以及解释该评估所需的一项边界。观察权限、原始上下文和人工协助,应与算法一同纳入比较。所选研究跨越六个领域,展示若干方法类别,但不是用于估计整个领域成功率的代表性样本。

代表性研究设计。输入与验收准则不同;各行不构成性能排名。
研究输入输出评测边界
Design2Code 研究 [7]网页截图前端代码视觉指标与人工评估静态外观,不含后端
Interaction2Code 研究 [16]交互前后截图交互式网页外观、交互检查与可用性单次转移,而非完整工作流
ProgramDistill 研究 [2]运行中的参考应用与结构化浏览器观察恢复的功能或重建应用新环境中的工作流回放有限行为覆盖,无视觉评分
SPRITE 研究 [20]游戏 UI 截图可编辑的 Unity UI 素材UI 基准与设计师评估基础交互,而非玩法恢复
GameReplica 研究 [21]截图与主动交互可运行的 HTML 游戏复刻模型判断规则、实现与视觉网页谜题,不证明完整引擎等价
WorldCoder 研究 [5]符号观察与目标Python 状态转移/奖励模型转移一致性与规划确定性的符号环境
ReDraw 研究 [4]截图或设计稿Android GUI 原型外观与视图层级单屏,不恢复应用逻辑
DeclarUI 研究 [6]多页设计/截图声明式移动 UI 代码视觉、编译与转移检查人工修正导航,不含后端
UIOrchestra 研究 [28]静态移动 UI 设计React/CSS 页面图像、组件与代码相似度重建参考数据,无原生运行测试
DIRE 研究 [10]反编译输出变量名预测编译 C 语料上的命名准确性命名辅助,不证明源码等价
SLaDe 研究 [1]函数汇编经类型补全的 C 函数有限输入/输出测试与编辑相似度以测试选择候选,使用原始上下文
DecompileBench 研究 [33]真实程序中的函数接受评估的反编译输出运行检查与模型辅助评估有限模糊测试覆盖与判定模型依赖
HALucinator 研究 [3]固件与 HAL/库知识固件重托管环境选定 I/O 与模糊测试演示外设简化与人工模型
FIRMWELL 研究 [35]Linux 固件服务及初始化过程恢复的服务环境配置的服务验收检查服务成功不等于设备等价
BinaryInferno 研究 [39]静态二进制报文样本部分字段格式字段边界精确率/召回率明文、对齐及分组假设
BinPRE 研究 [40]经插桩二进制与报文字段及选定语义字段完整匹配与语义 F1已执行路径与有限检测类别
NetLifter 研究 [42]带标注的 C/LLVM 解析器文法与字段约束人工字段比较与模糊测试需要源码,存在校验和近似
StateInspector 研究 [43]主动查询与运行时内存输入/输出状态机假设(Mealy 模型)已学习转移与有界检查已知输入;对状态存储位置的假设

11. 项目案例:检查能够确立什么

Perfect Dark 与 Super Mario 64 提供了相对精确的输出检查:针对特定版本的 ROM 摘要。但比较是否成立取决于构建模式。Perfect Dark 区分 IDO 一致性构建与不保证匹配的 GCC 构建;sm64 对某些配置关闭比较,包括所审 CI 中的 iQue。因此,构建成功不能替代已启用且通过的比较检查。两者都需要原始素材,Perfect Dark 还复用提取的启动代码。输出匹配不表示每个字节都由新重建的内容产生。[9] [50]

Pocket Tasks 检查的是列明的编辑、持久保存和回放行为。其检查器与回放会话存在重叠,不能相加作为独立观察;已披露的先前源码接触也不支持将其解释为盲重建。Open Scrantic 测试部分引擎性质,但依赖数据的检查可能跳过;无界面运行的完成检查不等于与原版画面比较。刻意引入的差异可以是有用的工程选择,但应明确报告,不能计作精确恢复。[51] [52]

rauchg.com 案例根据浏览器收到的 React Server Component(Flight)数据推导 Next.js 项目。其报告的 18 路由比较检查规范化组件树和模块引用,不包括 CSS。通过检查不代表渲染像素、数据库写入或未观察路由已经验证。BaoCut Slides 提供交互式编辑器及本地存储,但其测试没有与原版 Claude Slides 进行比较。部分 BaoCut 测试使用模拟依赖,或在尚未构建幻灯片编译器时跳过。[53] [54]

这些案例提示应分别讨论界面结构、视觉外观、交互和持久状态;其中任何一项都不蕴含隐藏服务器源码的恢复。面向行为的研究可加入相互依赖的工作流回放,例如 ProgramDistill,但未测试的数据库不变量与视觉一致性仍可能未解决。评测应明确它实际观察的是哪一层。[2]

NJFE 的摄像头到桌面桥接通过定制 USB 串口传输 JPEG 帧,不提供标准 USB 摄像头(UVC)接口,也没有恢复原始摄像头应用。它复用此前的 otoscope 协议实现,作者则将实现辅助归因于 Claude Code。TCLimate 在发送命令后检查部分云端上报状态;确认结果并不独立证明压缩机或气流的实际行为。报告的覆盖限于文档中的地区与设备,不能据此确立对其他地区或机型的支持。[8] [55]

检查依据文档或作者报告;本综述未执行这些检查。完整条目保留使用前提、来源修订与许可边界。
案例输入输出检查限制
Perfect Dark 案例 [9]原 ROM;重建的 C 代码包含提取素材的 N64 ROM各版本 MD5 清单限定一致性模式;复用启动代码;未重跑
Super Mario 64 案例 [50]指定版本的原 ROM重建的 N64 ROM按配置启用的 SHA-1 比较部分 CI/配置路径关闭比较
Pocket Tasks 案例 [51]作者自编参考程序;先前接触源码可独立运行的 Node 实现期望输出与捕获会话回放场景有限且重叠;并非盲测
Open Scrantic 案例 [52]原可执行文件与资源文件Rust 屏保引擎单元检查;场景完成测试依赖数据的检查可跳过;无原版画面对照验证器
rauchg.com 重建 [53]捕获的 Flight 输出推导生成的 Next 项目规范化路由树与模块映射不含 CSS 及隐藏后端路径
BaoCut Slides 案例 [54]作者所述的 Claude Slides 改编编辑器、宿主及本地文稿存储实现测试及报告的 Web 流程检查存在替代组件/跳过;无原服务一致性检查
NJFE 案例 [8]摄像头 UDP;既有 otoscope 工作USB 串口桥接与桌面查看器作者报告的实时帧解码报告限一款设备;非 UVC,亦非最初协议发现
TCLimate 案例 [55]既有协议工作;云端请求macOS 上的部分空调控制云端报告状态确认区域/机型有限;未独立确立物理效果

12. 可靠性与归因

验收检查决定结果的适用范围。若使用同一组有限测试选择候选,并将这些测试的通过率报告为成功,独立保留的检查尤其有价值。例如,SLaDe 在原始调用上下文中选择首个通过输入/输出测试的束搜索候选。这比仅能编译更有力,但弱于全部输入上的等价性。[1]

归因还需单独记录人工、模型、先前项目和参考系统分别提供了什么。Open Scrantic 明确提及 REA 与 Claude Code;BaoCut 支持智能体引擎,并不说明具体由哪个模型产生了改编实现。复用素材、既有协议逻辑及先前源码接触都应保持可见。同样,代码许可不转移原 ROM、字体或托管服务的权利。这些依赖同时影响可复现性与结果解读。[52] [54]

这些报告同样不足以支持有关智能体生产效率的因果结论。一项重建可能结合人工分析、既有实现、生成代码及针对目标的修正。缺少可比基线和干预记录时,不能将成功归因于单一模型或工具。后续研究应分别记录查明目标机制与编写重建实现所需的工作量,报告失败尝试和资源预算,并区分重建期间的智能体辅助与成品应用仅仅支持的智能体功能。

13. 研究问题

文献与案例比较提示,应围绕能够区分不同重建方案的证据制定研究议程。以下问题关注评测设计与报告方式,而非承诺某个模型能够带来的改进。

  • 能否用有版本记录、独立保留的轨迹测试未见过的操作序列、错误和重启,同时不在重建期间暴露期望值?应分别发布验证器与候选实现的变更。
  • 评测能否区分复用的素材/代码与新推导的行为,并在模型身份和工具版本之外,同时报告源码接触情况及人工干预?
  • 测试能否独立观察物理效果、持久状态及视觉输出,而非仅依赖一次成功的 API 响应或结构比较?
  • 能否通过可再分发的小型测试样本,明确展示被跳过的检查、不支持的版本及刻意差异,使复现无需分发专有素材,也不假设始终能访问可变的云服务?
  • 目标版本、设备变体或编译器设置改变后,重建成果有多少仍然成立?应保留原验收条件,将回归问题与适配工作分别报告。

14. 本综述的局限

本综述是对固定合集进行的有目的的编辑性综合,并非系统综述或汇总性能分析。来源记录涉及不同发表阶段、产物修订和访问程度。文档检查能够支持这里讨论的区分,但不能替代实验复现。所选案例用于展示方法上的对比,其在本综述中出现的频率,并不说明这些方法在实践中有多常见或多成功。

15. 结论

在六个领域中,通过证据、预期输出与验收判据之间的关系,可以更恰当地理解重建。即使主张范围有限,近似实现仍可能具有重要实践价值。明确输入权限、复用情况、版本边界和测试覆盖,有助于判断这种价值。共同的报告框架可以连接界面、代码、行为与环境方面的研究,同时保留赋予各项结果意义的差异。

参考文献

语料成员及参考记录固定于上述快照。参考文献保留全部 53 篇论文,包括正文未引用的条目,并包含所选八个案例。链接的合集条目可能另行更新。若调整本综述的论文语料、参考元数据或引文日期,需要更新综述版本和日期。

下载论文参考文献 · BibTeX ↓

  1. SLaDe:面向优化汇编的可移植小语言模型反编译器
    Jordi Armengol-Estapé; Jackson Woodruff; Chris Cummins; Michael F. P. O'Boyle. 2024. IEEE/ACM CGO 2024. 会议论文.
  2. ProgramDistill:将交互式 Web 应用转化为可验证的参考驱动软件工程任务
    Jeonghye Kim; Minseon Kim; Young Jin Kim; Matheus Pereira; Marc-Alexandre Côté; Alessandro Sordoni; Xingdi Yuan; Zhengyan Shi. 2026. arXiv. 预印本.
  3. HALucinator:通过抽象层仿真实现固件重托管
    Abraham A Clements; Eric Gustafson; Tobias Scharnowski; Paul Grosen; David Fritz; Christopher Kruegel; Giovanni Vigna; Saurabh Bagchi; Mathias Payer. 2020. USENIX Security 2020. 会议论文.
  4. 基于机器学习的移动应用图形用户界面原型生成
    Kevin Moran; Carlos Bernal-Cárdenas; Michael Curcio; Richard Bonett; Denys Poshyvanyk. 2020. IEEE Transactions on Software Engineering. 期刊论文.
  5. WorldCoder:通过编写代码并与环境交互构建世界模型的基于模型的语言智能体
    Hao Tang; Darren Key; Kevin Ellis. 2024. NeurIPS 2024. 会议论文.
  6. DeclarUI:以自动生成声明式界面代码连接设计与开发
    Ting Zhou; Yanjie Zhao; Xinyi Hou; Xiaoyu Sun; Kai Chen; Haoyu Wang. 2025. Proceedings of the ACM on Software Engineering. 期刊论文.
  7. Design2Code:面向自动化前端工程的多模态代码生成评测
    Chenglei Si; Yanzhe Zhang; Ryan Li; Zhengyuan Yang; Ruibo Liu; Diyi Yang. 2025. NAACL 2025. 会议论文.
  8. NJFE:用于电脑检查的 Soulear 相机协议桥接
    项目文档;来源复核于 2026-10-17.
  9. Perfect Dark:生成一致 ROM 的 Nintendo 64 反编译重建
    项目文档;来源复核于 2026-10-18.
  10. DIRE:基于神经网络的反编译标识符命名方法
    Jeremy Lacomis; Pengcheng Yin; Edward J. Schwartz; Miltiadis Allamanis; Claire Le Goues; Graham Neubig; Bogdan Vasilescu. 2019. ASE 2019. 会议论文.
  11. UI2App:评测可执行 Web 应用生成中的视觉交互推断
    Grace Man Chen; Litao Guo; Yifan Wu; Yiyu Chen; Yenchi Tseng; Sicheng Liu; Yuyu Luo; Ying-Cong Chen. 2026. arXiv. 预印本.
  12. FirmAE:面向动态分析的物联网固件大规模仿真
    Mingeun Kim; Dongkwan Kim; Eunsoo Kim; Suryeon Kim; Yeongjin Jang; Yongdae Kim. 2020. ACSAC 2020. 会议论文.
  13. Web2Code:面向多模态大语言模型的大规模网页转代码数据集与评估框架
    Sukmin Yun; Haokun Lin; Rusiru Thushara; Mohammad Qazim Bhat; Yongxin Wang; Zutao Jiang; Mingkai Deng; Jinhong Wang; Tianhua Tao; Junbo Li; Haonan Li; Preslav Nakov; Timothy Baldwin; Zhengzhong Liu; Eric P. Xing; Xiaodan Liang; Zhiqiang Shen. 2024. NeurIPS 2024 Datasets and Benchmarks. 会议论文.
  14. 分而治之:从截图生成界面代码
    Yuxuan Wan; Chaozheng Wang; Yi Dong; Wenxuan Wang; Shuqing Li; Yintong Huo; Michael Lyu. 2025. Proceedings of the ACM on Software Engineering. 期刊论文.
  15. ScreenCoder:以模块化多模态智能体推进面向前端自动化的视觉到代码生成
    Yilei Jiang; Yaozhi Zheng; Yuxuan Wan; Jiaming Han; Qunzhong Wang; Michael R. Lyu; Xiangyu Yue. 2026. EMNLP 2026. 会议已接收.
  16. Interaction2Code:从交互原型生成网页代码的多模态大语言模型评测基准
    Jingyu Xiao; Yuxuan Wan; Yintong Huo; Zixin Wang; Xinyi Xu; Wenxuan Wang; Zhiyao Xu; Yuhang Wang; Michael R. Lyu. 2025. ASE 2025. 会议论文.
  17. IWR-Bench:大型视觉语言模型能否根据用户交互视频重建可交互网页?
    Yang Chen; Minghao Liu; Yufan Shen; Yunwen Li; Tianyuan Huang; Xinyu Fang; Tianyu Zheng; Wenxuan Huang; Cheng Yang; Daocheng Fu; Jianbiao Mei; Rong Wu; Licheng Wen; Xuemeng Yang; Song Mao; Qunshu Lin; Zhi Yu; Yongliang Shen; Yu Qiao; Botian Shi. 2026. ICLR 2026. 会议论文.
  18. Vision2Web:采用智能体验证的分层视觉网站开发基准
    Zehai He; Wenyi Hong; Zhen Yang; Ziyang Pan; Mingdao Liu; Xiaotao Gu; Jie Tang. 2026. ICML 2026. 会议论文.
  19. Dashboard2Code:评估多模态模型重建交互式仪表盘的能力
    Tianhao Niu; Ziyu Han; Qiguang Chen; Shiqi Zhou; Baocai Shan; Hengjie Fang; Qingfu Zhu; Wanxiang Che. 2026. ACL 2026. 会议论文.
  20. SPRITE:从静态设计稿重建可用于游戏引擎的界面
    Yunshu Bai; RuiHao Li; Hao Zhang; Chien Her Lim; Ming Yan; Mengtian Li. 2026. CHI EA 2026 (poster/extended abstract). 会议论文.
  21. GameReplica:视觉语言智能体的黑盒视觉游戏复刻基准
    Boyu Qiao; Zixin Tang; Xiaoshuai Hao; Wenbo Li. 2026. arXiv. 预印本.
  22. 通过蒙特卡洛树搜索引导大语言模型生成代码世界模型
    Nicola Dainese; Matteo Merler; Minttu Alakuijala; Pekka Marttinen. 2024. NeurIPS 2024. 会议论文.
  23. Tycho:面向 ARC-AGI-3 的程序化世界模型主动抽象
    Jens Lehmann; Andrei Aioanei; Sahar Vahdati. 2026. arXiv. 预印本.
  24. RevengeBench:通过行为实验逆向恢复代码形式的策略
    Babak Rahmani; Sebastian Dziadzio; Joschka Strüber; Sergio Hernández-Gutiérrez; Matthias Bethge. 2026. arXiv. 预印本.
  25. 使用 REMAUI 逆向重建移动应用用户界面
    Tuan Anh Nguyen; Christoph Csallner. 2015. ASE 2015. 会议论文.
  26. 从 UI 设计图到 GUI 骨架:辅助启动移动界面实现的神经机器翻译器
    Chunyang Chen; Ting Su; Guozhu Meng; Zhenchang Xing; Yang Liu. 2018. ICSE 2018. 会议论文.
  27. pix2code:从图形用户界面截图生成代码
    Tony Beltramelli. 2018. EICS 2018. 会议论文.
  28. UIOrchestra:通过多智能体系统将 UI 设计转换为高保真代码
    Chuhuai Yue; Jiajun Chai; Yufei Zhang; Zixiang Ding; Xihao Liang; Peixin Wang; Shihai Chen; Wang Yixuan; Yanping Wang; Guojun Yin; Wei Lin. 2025. Findings of EMNLP 2025. 会议论文.
  29. 利用学习得到的变量名称与类型增强反编译输出
    Qibin Chen; Jeremy Lacomis; Edward J. Schwartz; Claire Le Goues; Graham Neubig; Bogdan Vasilescu. 2022. USENIX Security 2022. 会议论文.
  30. ReSym:利用大语言模型恢复去符号二进制中的变量与数据结构符号
    Danning Xie; Zhuo Zhang; Nan Jiang; Xiangzhe Xu; Lin Tan; Xiangyu Zhang. 2024. ACM CCS 2024. 会议论文.
  31. LLM4Decompile:使用大语言模型反编译二进制代码
    Hanzhuo Tan; Qi Luo; Jing Li; Yuqun Zhang. 2024. EMNLP 2024. 会议论文.
  32. DeGPT:使用大语言模型优化反编译器输出
    Peiwei Hu; Ruigang Liang; Kai Chen. 2024. NDSS 2024. 会议论文.
  33. DecompileBench:面向真实场景的反编译器综合评测基准
    Zeyu Gao; Yuxin Cui; Hao Wang; Siliang Qin; Yuanda Wang; Zhang Bolun; Chao Zhang. 2025. Findings of ACL 2025. 会议论文.
  34. Fuzzware:利用精确的 MMIO 建模提升固件模糊测试效果
    Tobias Scharnowski; Nils Bars; Moritz Schloegel; Eric Gustafson; Marius Muench; Giovanni Vigna; Christopher Kruegel; Thorsten Holz; Ali Abbasi. 2022. USENIX Security 2022. 会议论文.
  35. 面向 Linux 固件二进制的用户空间依赖感知重托管
    Chuan Qin; Cen Zhang; Yaowen Zheng; Puzhuo Liu; Jian Zhang; Yeting Li; Weidong Zhang; Yang Liu; Limin Sun. 2026. NDSS 2026. 会议论文.
  36. 使用 Penguin 进行以目标为中心的固件重托管
    Andrew Fasano; Zachary Estrada; Luke Craig; Ben Levy; Jordan McLeod; Jacques Becker; Caden Kline; Elysia Witham; Cole DiLorenzo; Ali Bobi; Dinko Dermendzhiev; Tim Leek; Wil Robertson. 2025. Workshop on Binary Analysis Research (BAR) 2025. 会议论文.
  37. NEMESYS:通过分析单条报文的内在结构逆向推断网络报文语法
    Stephan Kleber; Henning Kopp; Frank Kargl. 2018. 12th USENIX Workshop on Offensive Technologies (WOOT 18). 会议论文.
  38. NetPlier:基于报文记录的概率网络协议逆向工程
    Yapeng Ye; Zhuo Zhang; Fei Wang; Xiangyu Zhang; Dongyan Xu. 2021. NDSS 2021. 会议论文.
  39. BinaryInferno:面向二进制报文格式字段推断的语义驱动方法
    Jared Chandler; Adam Wick; Kathleen Fisher. 2023. NDSS 2023. 会议论文.
  40. BinPRE:增强基于二进制分析的协议逆向工程中的字段推断
    Jiayi Jiang; Xiyuan Zhang; Chengcheng Wan; Haoyi Chen; Haiying Sun; Ting Su. 2024. ACM CCS 2024. 会议论文.
  41. ICEPRE:基于数据驱动混合符号执行的工控协议逆向工程
    Yibo Qu; Dongliang Fang; Zhen Wang; Jiaxing Cheng; Shuaizong Si; Yongle Chen; Limin Sun. 2025. Proceedings of the ACM on Software Engineering (ISSTA 2025). 期刊论文.
  42. 从网络协议实现提取精确格式规范及其安全应用
    Qingkai Shi; Junyang Shao; Yapeng Ye; Mingwei Zheng; Xiangyu Zhang. 2023. ACM CCS 2023. 会议论文.
  43. 越仔细观察,学到的越多:用于协议状态机学习的灰盒方法
    Chris McMahon Stone; Sam L. Thomas; Mathy Vanhoef; James Henderson; Nicolas Bailluet; Tom Chothia. 2022. ACM CCS 2022. 会议论文.
  44. 基于自动机学习的蓝牙设备指纹识别与分析
    Andrea Pferscher; Bernhard K. Aichernig. 2022. Formal Methods in System Design. 期刊论文.
  45. CrackMeBench:面向智能体的二进制逆向工程基准
    Isaac David; Arthur Gervais. 2026. arXiv. 预印本.
  46. CREBench:评估大语言模型的密码二进制逆向工程能力
    Baicheng Chen; Yu Wang; Ziheng Zhou; Xiangru Liu; Juanru Li; Yilei Chen; Tianxing He. 2026. COLM 2026. 会议论文.
  47. 智能体网络安全的下一项挑战:真实场景且无训练数据污染的逆向工程基准
    Jeremy Spence; Nicholas Assaderaghi; Feng Xiao; Jinhao Zhu; Nikil Ravi; Xiangyu Qi; Matthew Jagielski; Raluca Ada Popa; Eric Wallace; Guannan Wei; Yangruibo Ding; Zhuo Zhang. 2026. arXiv. 预印本.
  48. 人类与机器:AI 智能体在软件逆向工程中的对比研究
    Samuele Doria; Stefano De Rosa; Ruoyu Wang; Zion Leonahenahe Basque; Eleonora Losiouk; Simone Aonzo. 2026. arXiv. 预印本.
  49. ProgramBench:语言模型能否从零重建程序?
    John Yang; Kilian Lieret; Jeffrey Ma; Parth Thakkar; Dmitrii Pedchenko; Sten Sootla; Emily McMilin; Pengcheng Yin; Rui Hou; Gabriel Synnaeve; Diyi Yang; Ofir Press. 2026. NeurIPS 2026. 会议已接收.
  50. Super Mario 64:带明确比较开关的 ROM 重建
    项目文档;来源复核于 2026-10-17.
  51. Pocket Tasks:重建任务状态与持久保存行为
    项目文档;来源复核于 2026-10-17.
  52. Open Scrantic:重建 Johnny Castaway 屏幕保护程序引擎
    项目文档;来源复核于 2026-10-18.
  53. rauchg.com:根据捕获的 Flight 输出重建 RSC 博客
    项目文档;来源复核于 2026-10-17.
  54. BaoCut Slides:交互式网页编辑器改编
    项目文档;来源复核于 2026-10-17.
  55. TCLimate:重建选定的 TCL Home 云端控制
    项目文档;来源复核于 2026-10-18.
  56. WebUIBench:评估多模态大语言模型从网页界面生成代码能力的综合基准
    Zhiyu Lin; Zhengda Zhou; Zhiyuan Zhao; Tianrui Wan; Yilun Ma; Junyu Gao; Xuelong Li. 2025. Findings of ACL 2025. 会议论文.
  57. Decompile-Bench:面向真实二进制反编译的百万级二进制与源码函数对
    Hanzhuo Tan; Xiaolong Tian; Hanrui Qi; Jiaming Liu; Zuchen Gao; Siyi Wang; Qi Luo; Jing Li; Yuqun Zhang. 2025. NeurIPS 2025 Datasets and Benchmarks. 会议论文.
  58. JsDeObsBench:衡量与评测大语言模型的 JavaScript 反混淆能力
    Guoqiang Chen; Xin Jin; Zhiqiang Lin. 2025. ACM CCS 2025. 会议论文.
  59. CASCADE:谷歌基于大语言模型的 JavaScript 反混淆器
    Shan Jiang; Pranoy Kovuri; David Tao; Zhixun Tan. 2026. ICSE-SEIP 2026. 会议论文.
  60. SK2Decompile:从骨架到皮肤的大语言模型两阶段二进制反编译
    Hanzhuo Tan; Weihao Li; Xiaolong Tian; Siyi Wang; Jiaming Liu; Jing Li; Yuqun Zhang. 2026. ICLR 2026. 会议论文.
  61. 无线协议自动逆向工程
    Johannes Pohl; Andreas Noack. 2019. 13th USENIX Workshop on Offensive Technologies (WOOT 19). 会议论文.

引用本综述

本页是借助 AI 编写的在线专题综述,未经同行评审,也不报告新实验。可使用浏览器的打印功能保存为 PDF。

@misc{awesome-rea-survey-2026,
  author = {{Awesome REA contributors}},
  title = {{Reverse Engineering Anything: An Evidence-Centered Survey}},
  year = {2026},
  version = {1.0},
  url = {https://awesomerea.org/survey/},
  note = {Online editorial survey; corpus snapshot 2026-10-18; no new experiments}
}

本综述使用的目录快照 · 建议修订