Claude 逆向工程能力突破天际!

一位Reddit用户上传了27年前用Visual Basic 4开发的EXE文件,Claude AI居然仅用5分钟就将其完美转换成了Python版本!

这不仅仅是简单的代码转换,而是真正从二进制文件中提取并重建了完整的功能。
如果你有幸曾编写查看过二进制文件,就会知道这事有多离谱!
从老旧EXE到完美运行的Python版本
这位自称是「祖父」的Reddit用户表示,其初衷原本只是想让自己2岁的孙女体验一下他在1997年用Visual Basic 4开发的小游戏。
但27年前的可执行文件要在现代系统上运行?没有古老的DLL和兼容层支持?
这几乎是不可能的任务。
于是他抱着试一试的心态,将这个古老的EXE文件上传给了Claude 3.7,并简单地询问:
「你能告诉我如何运行这个文件吗?我想它是用Visual Basic 4开发的。如果能转换成Python就太好了。」
接下来发生的事情让他震惊了:
Claude不仅给出了常规的安全警告,还进一步分析了二进制文件并识别出了具体组件:
-
「Form1」
-
「cntTimer」
-
「btnExit」
-
甚至检测出了嵌入的声音文件!(过分牛逼了……

然后,Claude完成了一个完美的Python转换版本,使用Pygame实现,并且:
-
完美复制了原始功能
-
提供了清晰的安装说明
-
第一次运行就成功了!
当这位用户请求绑定声音到空格键和添加彩色字体等调整时,Claude立即提供了完美的代码更新。
整个过程用时不到5分钟!
社区炸了
这个令人难以置信的案例很快在Twitter上引发了热议,无数人表示难以相信。
来感受下网友们的震撼:





不过,也有不少技术专家提出了质疑。
@Axel直接指出:
「.NET并不是真正的二进制。你可以很容易地反编译.NET文件,比逆向工程PE可执行文件要容易得多。@CommunityNotes」
@Foreign Bot Network也质疑道:
「问它『什么是汇编代码的前三行』或『什么是启动<某物>的命令』,你会发现它无法回答。它不理解代码,很可能甚至看不到代码。」
然而,有用户实际验证了这一功能。
@Loftwah分享了他成功使用exe文件的案例:
「这是错误的。我能够使用exe文件。https://claude.ai/share/30d811c0-1369-4475-87f4-4cb4e0d350d0」
@Matthew Schultz提供了技术解释:
「Claude可能能够从以P-Code模式编译的VB4可执行文件中提取组件名称,然后在Python中重建类似功能。这些旧EXE中的字符串可以在不完全反编译的情况下揭示表单/控件名称。」
@André Freitas澄清了实际情况:
「你们过度解读了整件事。Claude并没有反汇编任何东西。它从exe文件中读取了字符串,找到了表单名称、一些UI控件的名称和声音文件的名称。」
@Bob Pritchett还分享了他的类似经历:
「好主意!我刚刚拿出了我1989年的俄罗斯方块游戏(为MS-DOS编写的C语言),让ChatGPT o1将其转换为JavaScript并添加了一些复古音效。相当酷!」

技术原理:AI是如何完成这一壮举的?
从各方讨论来看,Claude并非完全「反编译」了EXE文件,而是通过分析可执行文件中的字符串资源,识别了关键组件。
@Shawn McAllister解释说这可能是P-Code可执行文件:
「我会说这是一个P-Code可执行文件。如果是这种情况,它看起来与如今反编译的npm没有太大区别。它们被编译成P-Code,然后使用解释器运行它们。」

@bot man补充道:
「直接回到VB基础,它的工作方式与C#相同,可执行文件被编译成一种中间语言,与源代码非常相似。」
这表明AI工具在处理某些类型的旧程序时,可能比我们想象的更强大。
尽管它无法完全理解深层汇编代码,但能够识别出关键组件名称和资源文件,并基于此重建功能。
AI 的逆向工程潜力
这个案例虽然有其局限性,但展示了AI在软件考古和代码迁移方面的潜力。
有用户已经开始思考更多可能性:
@neverwinsthegame询问:
「等等,它能将vba转换成go吗?」
@pimp morrison则想知道:
「这是否让我们有希望在win 10电脑上运行多年前在win xp时代关闭的旧应用程序?我说的是一个强大、复杂的音频工作站软件(确切地说是cakewalk)。」
尽管这个案例令人印象深刻,但我们也需要客观看待其局限性。
最后,@Nossy表达了对某些功能的怀疑:
「我可能会开始尝试用它做其他事情。但我怀疑Python能修改Windows对话框。」
无论如何,这个案例展示了AI在代码理解和迁移方面的进步。
虽然它可能算不上是完美的逆向工程,但能够从旧文件中提取关键信息并重建功能,对于保存老旧软件和游戏遗产具有重要意义。
AI 逆向工程的时代已经到来,你有什么古老的程序想要复活呢?

试试扫雷怎么样?
相关链接
-
原始Reddit帖子:https://www.reddit.com/r/ClaudeAI/s/h5D8V7hkrt
-
原作者分享的Claude对话:https://claude.ai/share/3eecebc5-ff9a-4363-a1e6-e5c245b81a16
-
@Loftwah验证的类似案例:https://claude.ai/share/30d811c0-1369-4475-87f4-4cb4e0d350d0
-
@Bob Pritchett的ChatGPT Tetris转换示例:https://chatgpt.com/canvas/shared/67bfb489606081918ee9091d25de2895
(文:AGI Hunt)