乐于分享
好东西不私藏

闭源软件藏不住了:GPT读懂EXE,开源社区迎来“超级外挂”

闭源软件藏不住了:GPT读懂EXE,开源社区迎来“超级外挂”

闭源软件最坚固的一堵墙,正在被AI凿穿。

过去,一家硬件厂商可以只发布Windows驱动,把真正的源代码、硬件协议和寄存器细节牢牢锁在公司内部。

Linux不支持?

macOS不能用?

厂商停止维护了?

对不起,请换设备。

因为摆在开源开发者面前的,往往只有一个经过编译的exe、dll或者sys文件。想从这些二进制文件中搞清楚硬件如何工作,需要反汇编、动态调试、协议抓包、寄存器分析,以及大量近乎考古的人工劳动。

有些驱动,开源社区可能要啃上几年。

但现在,有人突然宣布:

这堵墙可能已经没那么高了。

一位安全专家:我已经不关心有没有Linux驱动了

事情起源于安全研究员Brendan Dolan-Gavitt的一条帖子。

他表示,自己现在购买一些普通硬件时,已经不太在意厂商是否提供Mac或者Linux驱动。

原因非常简单:

只要厂商提供了Windows驱动,大模型就可以协助逆向分析,并在几个小时内合成一个面向其他操作系统的驱动。

随后,Eric S. Raymond转发了这一观点,并把火药桶直接推进了闭源软件的大门。

很多人对Eric S. Raymond这个名字可能不熟悉。

但在开源世界,他几乎是教科书级的人物。

他是开放源代码促进会的联合创始人,也是《大教堂与集市》的作者。当年正是这篇文章,让无数传统软件公司第一次认真思考:

为什么一群分散在世界各地的程序员,可以用开放协作的方式,做出比封闭公司更可靠的软件?

这一次,Raymond把矛头对准了闭源驱动。

他认为,未来甚至不一定需要开发者先手动反编译。把Windows驱动的二进制文件交给前沿大模型,大模型就可能帮助恢复出可读代码。

他还给出了自己的经历:

他曾把一个DOS时代的二进制程序交给ChatGPT,最后得到了可读性相当不错的Pascal代码。

于是,一个极具爆炸性的判断出现了:

闭源驱动可能正在失去意义。

真能把exe直接变回源代码?

先泼一盆冷水。

把exe交给GPT,并不等于GPT打开压缩包,从里面找回了厂商原来的源代码。

源代码经过编译后,大量信息会永久丢失。

变量原来叫什么、函数为什么这样设计、代码里写过哪些注释、开发者经历过怎样的重构,这些内容通常无法凭空恢复。

即使两个程序运行结果完全相同,它们的源代码也可能截然不同。

因此,AI得到的并不是“原版源码”,而是一份根据二进制行为重建出来的近似实现。

更准确地说,这个过程分为几个步骤。

首先,Ghidra、IDA等工具把机器指令转换成汇编代码和伪代码。

然后,大模型分析函数之间的调用关系,识别Windows API、数据结构、状态机和硬件通信流程。

过去最痛苦的地方,是反编译出来的代码里充斥着类似sub_14001A230这样的无意义函数名。

人类工程师需要一点点推断:

这个函数是在初始化设备,还是在配置DMA?

这个数值是超时时间,还是寄存器地址?

这个循环是在读取传感器,还是等待硬件中断?

而大模型最擅长的,恰恰是从海量零碎信息中寻找语义。

它可以给函数重新命名,解释控制流程,推测数据结构,再根据Linux或者macOS的驱动接口,生成一套新的实现。

接下来,AI智能体还能自动编译、运行、读取错误日志、修改代码、重新测试。

于是,传统的逆向工程开始发生变化:

过去是专家盯着几十万行反汇编代码一点点啃。

现在则可能变成:

AI分析、AI生成、人类验证、硬件反馈、AI继续修正。

真正可怕的不是某一次生成有多准确,而是这个循环可以连续运行几百次。

“几小时写出驱动”,到底靠不靠谱?

对一些简单设备,确实有可能。

例如某些USB灯、串口设备、采集模块、键盘、鼠标、风扇控制器和简单传感器,它们的驱动逻辑并不复杂。

很多所谓“驱动”,核心工作只是:

发现设备、发送几条控制命令、读取数据,再把数据暴露给操作系统。

只要Windows驱动没有严重混淆,通信协议能够被动态观察,AI就有机会在较短时间内生成一个可以工作的最小驱动。

但如果对象换成GPU,事情就完全不同了。

现代显卡驱动包含内存管理、任务调度、着色器编译、显示输出、功耗控制、视频编解码、硬件中断、错误恢复以及大量针对不同芯片的特殊处理。

它还可能依赖签名固件、加密通信和厂商内部工具链。

让GPT在几个小时内完整复刻一套英伟达驱动,目前显然不现实。

代码能够编译,也不等于代码正确。

设备能够亮起来,也不等于功耗控制、安全性、稳定性和性能已经达到商用水平。

在驱动开发中,最危险的错误甚至不是程序崩溃,而是程序看起来运行正常,却在极端状态下写错了寄存器、破坏了内存,或者让硬件进入不可恢复的状态。

所以,AI暂时还没有消灭驱动工程师。

它首先消灭的,是大量机械、重复和高度依赖经验的分析工作。

为什么所有人第一时间想到了英伟达?

因为在开源社区与闭源驱动的战争中,英伟达几乎是最著名的主角。

2012年,Linux之父Linus Torvalds曾公开批评英伟达对Linux生态的支持态度,并留下了开源历史上最著名的中指画面之一。

由于缺少完整文档,开源社区长期通过逆向工程开发Nouveau驱动。

开发者需要观察英伟达官方驱动的行为,再一点点猜测GPU内部是如何工作的。

其中很多关键功能,例如频率调节、功耗管理和新架构支持,都曾因为缺少官方资料而进展缓慢。

不过,今天的情况已经发生变化。

英伟达从2022年开始开源Linux GPU内核模块,随后又逐步把开放内核模块变成新架构上的默认方案。

但这并不意味着英伟达整个软件栈已经完全开放。

GPU用户态驱动、CUDA生态中的大量核心组件,以及许多硬件实现细节,依旧掌握在英伟达手中。

因此,“英伟达慌了”更像是一种标题化表达。

截至目前,没有证据表明英伟达因为Raymond的这番言论公开作出回应。

但这件事确实击中了英伟达以及所有硬件公司的一个长期命题:

当AI可以低成本分析二进制程序时,闭源还能提供多强的技术护城河?

闭源不会消失,但“黑盒溢价”会下降

过去,闭源软件的一项重要优势,是别人看不懂。

即便竞争对手拿到了可执行文件,也要投入大量逆向工程师,花费数月甚至数年,才能理解其中的一部分逻辑。

很多项目不是技术上绝对做不到,而是经济上不值得做。

假设逆向一款冷门设备的驱动,需要三名专家工作半年,开源社区通常只能选择放弃。

但如果AI把工作量压缩到一名工程师几天,很多过去“不值得逆向”的设备,就突然有了被重新支持的可能。

停产十年的扫描仪,可能重新获得驱动。

只支持Windows的采集卡,可能被接入Linux。

厂商已经倒闭的工业设备,可能被重新激活。

国产操作系统的硬件兼容问题,也可能出现一种全新的解决路径。

这才是Raymond这番话真正有冲击力的地方。

AI未必能够完美还原所有闭源软件。

但它正在快速降低理解闭源软件的成本。

而一旦理解成本下降,依靠信息不对称建立起来的商业壁垒,也会随之变薄。

当然,还有一条不能忽略的红线

逆向工程并不天然等于违法,但也绝不是毫无边界。

为了实现兼容、修复已停止维护的设备,或者进行善意安全研究,在一些国家和地区可能存在相应的法律空间。

但不同司法辖区、软件许可协议和技术保护措施,对逆向工程的规定差异很大。

如果目的是直接复制商业产品、绕过授权、传播受版权保护的代码,性质就完全不同了。

更麻烦的是,AI可能让逆向工程的门槛下降得太快。

以前,只有少数安全研究员能够系统分析驱动、固件和商业软件。

未来,一个人只需要给智能体下达任务,它就能自动调用反编译器、调试器和测试工具,对目标连续分析几天。

这既可以用来拯救旧硬件,也可以用来寻找漏洞、绕过限制甚至制造攻击工具。

工具没有立场。

但能力一旦普及,整个软件行业都必须重新设计自己的防线。

最后的赢家,可能不是开源,也不是闭源

未来真正可靠的护城河,可能不再是“我不给你源代码”。

因为代码只要需要在用户设备上运行,就必须以某种形式交到用户手中。

过去,这份二进制文件像一本被打乱顺序、删除标题和注释的书。

普通人即使拿到了,也很难读懂。

现在,AI正在成为那个不知疲倦的翻译员。

它可以逐句分析、寻找上下文、反复实验,最后重新整理出一本意思大致相同的新书。

厂商真正能够依靠的,将变成更快的迭代速度、更强的硬件能力、更完整的生态、更好的服务,以及持续领先的工程经验。

闭源不会因为大模型突然消失。

英伟达也不会因为几条帖子就交出CUDA。

但一个时代可能真的要结束了:

未来最先被AI摧毁的,不一定是闭源软件。

而是那种以为只要藏起源代码,别人就永远看不懂的傲慢。

当机器开始读懂机器,黑盒仍然是黑盒。

只是它再也没有那么黑了。