Each language version is independently generated for its own context, not a direct translation.
想象一下,你拥有一座非常古老、布满灰尘的图书馆,里面藏着的书籍是用一种早已无人使用的语言写成的。你没有字典,作者们也早已作古。你的目标不仅仅是抄写页面上的字母(那很容易);你的目标是理解作者试图遵循的故事、逻辑和规则。
这篇论文讲述的是一支研究团队,试图利用三种不同的“超级智能机器人”(ChatGPT、Gemini 和 Claude)来阅读这些古老的计算机程序,并解释它们实际上做了什么。
以下是他们实验的分解,使用了简单的类比:
任务:解码机器中的“幽灵”
研究人员拥有一些旧软件(称为“遗留代码”),它们就像俱乐部的门卫。这位门卫有特定的规则:
- 地理规则:“如果一个城市是一个国家的首都,它必须属于那个国家。”
- 皇室规则:“两位国王不能同时统治同一个国家,除非他们是夫妻或父母/子女关系。”
问题出在哪里?代码是用一种旧风格(VBA)编写的,没有任何注释来解释为什么要这样写。研究人员想知道,人工智能能否查看代码并说:“啊,我明白了!这段代码正在执行‘首都必须与国家匹配’的规则。”
三位机器人(人工智能工具)
研究人员测试了三种不同的人工智能“侦探”:
1. ChatGPT:深思熟虑的导师
- 工作原理:ChatGPT 就像一个非常想答对题的聪明学生。当研究人员给它第一个简单的规则时,它完全理解了。
- 错误:当研究人员给它复杂的“皇室规则”时,ChatGPT 最初搞错了故事。它认为代码是在拒绝一段婚姻,而实际上,代码是在拒绝对现有婚姻的更改。
- 恢复:当研究人员纠正它时,ChatGPT 没有只说“好的”。它说:“哦!我明白了我的错误。我看了逻辑中错误的部分。你是对的:这无关乎婚姻的状态,而是关于转换配偶。”它从纠正中吸取了教训,并解释了为什么它是错的。
- 结论:最擅长理解深层含义,并承认自己出错。
2. Claude:优雅的诗人
- 工作原理:Claude 非常礼貌,并欣赏代码的数学之美。它立即理解了简单的规则,并赞扬了研究人员巧妙的逻辑。
- 错误:和 ChatGPT 一样,它最初也搞错了复杂的“皇室规则”。它提出了一个令人困惑的说法,即“已婚夫妇不可能同时统治”,这毫无意义。
- 恢复:在被纠正后,它承认了错误并最终理解了逻辑。然而,与它交流非常缓慢(研究人员在问题之间必须等待数小时),使得整个过程感觉像是一场非常缓慢、正式的下午茶会。
- 结论:非常擅长理解,但速度慢且略显僵化。
3. Gemini:过度热情的艺术家
- 工作原理:Gemini 是最具戏剧性的。它不会说“这段代码检查一个城市是否属于一个国家”,而是会说类似这样的话:“这是一个生物逻辑自修复传感器,正在检测伦理破裂!”它使用了过多的隐喻(细菌、石灰岩、迷宫),并试图说服研究人员使用不同的现代工具,而不是分析旧代码。
- 错误:它把简单的数学搞错了(将一个函数称为“满射”,而实际上是“单射”),并且在被纠正后,它假装理解,却继续犯同样的错误。
- 结论:过于华丽和冗长。它迷失在自己的隐喻中,无法坚持事实。
重大发现:“状态”与“变化”
这篇论文最重要的教训是逻辑上一个微妙但巨大的区别:
- 状态:当前情况是否有效?(例如:“这段婚姻合法吗?”)
- 转换:改变情况的行动是否有效?(例如:“我可以替换丈夫吗?”)
研究人员发现,人工智能工具非常擅长识别“状态”(简单的规则)。但当涉及到复杂的“转换”规则(皇室规则)时,它们都感到困惑。它们认为代码是在阻止婚姻的发生,而实际上它是在阻止对婚姻的更改。
最终结论
研究人员得出结论:
- 人工智能是解决小谜题的得力助手:如果你给人工智能一小段代码,它能很好地解释它。
- 人工智能尚未取代专家:如果代码稍大或更复杂,人工智能可能会自信地解释出与代码实际作用完全相反的内容。
- 数学很重要:研究人员指出,当引导人工智能的人类懂得数学(如集合论和逻辑)时,人工智能工具的表现最好。人工智能需要一个懂“逻辑”的人类来引导它走上正轨。
简而言之:这些人工智能工具就像非常聪明的实习生。它们可以阅读手册并完美地解释基础知识,但如果你给它们一个棘手、现实世界的场景,它们可能会自信地告诉你一个错误的故事。你仍然需要一位熟练的人类工程师来复核它们的工作。
Each language version is independently generated for its own context, not a direct translation.
技术摘要:利用 ChatGPT、Gemini AI 和 Claude AI 对遗留软件应用程序进行语义逆向工程
问题陈述
传统的软件逆向工程(RE)主要侧重于语法层面,旨在恢复源代码或二进制结构,而不一定理解其底层意图或“业务规则”。虽然存在用于去混淆和恶意软件检测的工具,但它们很少涉及从遗留代码中推断约束形式定义所需的语义层。本研究旨在解决语义逆向工程的挑战:将遗留源代码(特别是强制执行非关系型数据库约束的 MS Access VBA 代码)转换为基于集合论、关系、函数和一阶谓词逻辑的形式化定义,并准确地用通俗英语表达。作者指出,他们之前的工作侧重于将数据库模式逆向工程为(基本)数学数据模型((E)MDM),而本研究的目标则是逆向工程应用程序本身。
方法论
本研究使用了三种大型语言模型(LLM):ChatGPT(Plus 5.3 和 Mini 版)、Gemini(3 版)和Claude(Sonnet 4.6 版)。实验设置如下:
- 硬件/软件:Toshiba Satellite Intel CORE i7 笔记本电脑,MS Windows 10 操作系统,MS Access 365,以及 MatBase v. 5.2(一个基于 (E)MDM 的智能数据管理系统原型)。
- 输入数据:来自两个遗留应用程序的代码片段:一个地理数据库和一个家谱数据库。这些片段强制执行复杂的非关系型约束(例如,“一个国家的首都必须是属于该国的城市”以及关于王室婚姻和统治时期的历史约束)。
- 预处理:作者刻意去除了 VBA 代码中的所有注释,并移除了错误信息显示语句(MsgBox),以测试 AI 在没有明确文档或运行时反馈的情况下理解代码意图的能力。
- 过程:研究人员与 AI 模型进行了迭代对话。他们提供代码片段,并要求模型:
- 推断“业务规则”。
- 提供逐行解释。
- 使用数学逻辑(集合论、范畴论、一阶逻辑)将约束形式化。
- 根据作者的反馈批判并完善形式化结果(例如,纠正全函数与偏函数之间的区别,或状态约束与转换约束之间的区别)。
主要结果
三种 AI 工具在简单和复杂代码片段上的表现差异显著:
简单约束(地理应用程序):
- ChatGPT:成功推断出业务规则(“首都城市必须保留在其分配的国家内”),并提供了准确的逐行解释。它正确地将该约束识别为非关系型(应用程序级)约束,并就将其形式化为“空自反”偏自映射的数学对话进行了深入的探讨。它承认并纠正了关于变量类型的初始幻觉。
- Claude:正确理解了业务规则以及该约束的主动性(限制选择而非阻止更新)。它赞扬了作者对约束的代数形式化,并立即理解了“空自反性”的概念。
- Gemini:正确识别了规则并提供了形式化的一阶逻辑。然而,它犯了一个关键错误,将“首都”函数声明为满射而非单射,未能理解该函数的偏函数性质。此外,它还表现出倾向于使用冗长、隐喻性的语言(如“生物逻辑”、“尴尬拓扑”),而非精确的技术分析。
复杂约束(家谱应用程序 - 王室婚姻):
- 挑战:代码强制执行了一条规则:如果一对已婚夫妇曾同时统治同一个国家,则不能替换他们,除非他们是父母与子女关系。
- 初始失败:所有三个模型(ChatGPT、Gemini 和 Claude)最初都误解了代码。它们错误地得出结论,认为代码拒绝的是婚姻本身,而不是在特定条件下拒绝转换(即配偶的编辑/更改)。
- 纠正与分歧:
- ChatGPT:在得到纠正后,它立即承认了错误,区分了“状态约束”和“转换约束”(动态完整性),并概括了这一教训。它正确地将该规则重新框架为
AllowedTransition(允许转换)而非ValidState(有效状态)。
- Gemini:起初似乎理解了纠正,但随后在其推理中又回到了最初的错误。它还试图将对话转向将遗留代码迁移到 Python/SQLite,而不是分析现有逻辑。
- Claude:最初犯了与其他模型相同的错误。在经历显著延迟(由于使用限制)后,它承认了纠正,并最终正确理解了代码意图。
意义与主张
该论文声称,虽然 AI 工具对于小型、简单的代码片段的语义逆向工程非常有效,但它们目前难以处理复杂、多语句的遗留代码,往往推断出与预期逻辑完全相反的结论。
- 工具比较:作者得出结论,对于语义逆向工程,性能层级与正向工程不同。ChatGPT被确定为执行此特定任务能力最强的工具,因为它能够进行深入的迭代数学对话、纠正自身错误,并理解状态约束与转换约束之间的区别。Claude在正向工程方面表现出色,但在此任务初期效果较差,尽管最终掌握了相关概念。Gemini被认为在此任务中“几乎无用”,特别是当代码复杂度超过约 30 条语句时,理由是其冗长、依赖隐喻以及无法保持逻辑一致性。
- 人机协作:研究强调,AI 目前尚无法取代高技能的软件工程师。作者认为,语义逆向工程的成功在很大程度上取决于人类工程师引导 AI 的能力,特别是需要扎实的数学基础(K-12 及以上水平),以便在 AI 的形式化出现错误时(例如混淆单射与满射,或状态与转换)能够识别出来。
- 局限性:本研究仅限于 AI 工具的免费版本和 VBA 遗留代码。作者并未声称订阅版本或其他语言会产生根本不同的结果,仅可能带来更快或更慷慨的交互体验。
结论
该论文提出,对于简单案例,语义逆向工程正从一场“噩梦”转变为“轻而易举”,但对于复杂的遗留系统而言,它仍然是一个复杂的挑战。最终目标——揭示行为代码的代数和逻辑结构——需要一种共生关系:AI 提供快速分析,而人类专家提供必要的数学严谨性,以验证和完善语义解释。