他将差异区域的二进制内容完整提取出来,存入一个独立文件。
然后他打开反汇编工具,开始逐条翻译这47.2KB的机器码。
前两KB的代码结构很清晰。
它确实是一个MAC地址验证模块,逻辑简单,功能单一。
用来检查以太网帧的源MAC地址,是否在本机白名单中。
如果不在,丢弃该帧。
这就是弗兰克对外公开的漏洞修复内容,技术上完全站得住脚。
但代码没有在第2KB处结束。
从第2049个字节开始,反汇编工具输出了一段完全不同风格的指令序列。
陆佳杰的眼睛眯了起来。
这段代码首先读取通信端口的接收缓冲区,提取最近一千个数据帧的引导码。
然后将这些引导码,与一张硬编码在ROM中的协议特征表进行逐位比对。
特征表里列出了三种标准协议的帧头格式:PROFINET、PROFIBUS、ASi。
如果收到的数据帧引导码,与这三种标准全部不匹配,代码进入下一个分支。
陆佳杰翻译下一个分支的指令时,手指停了一下。
这个分支做了两件事。
第一,修改操作系统内核的定时器中断向量表,将主循环扫描的定时器预分频值从原始的5000微秒改写为50000微秒。
但它同时修改了人机界面的显示缓冲区映射,让显示面板上的扫描周期数值始终回显原始设定值。
操作员看到的是5毫秒,实际运行的是50毫秒。
第二,对模拟量输出模块的数据寄存器执行一个右移四位的位操作。
十二位精度的输出值,低四位被清零,等效精度降为八位。
陆佳杰深吸了一口气。
他继续往下翻译。
代码的末尾有一个退出条件,当通信端口连续一千个周期内不再检测到异形帧时,所有修改恢复原始值。
干净利落。
来无影,去无踪。
操作员拔掉第三方设备的网线后,PLC在不到一秒的时间内就会完全恢复正常。
没有任何日志记录,没有任何故障代码,系统事件表里空空如也。
陆佳杰将完整的反汇编结果保存为文本文件,连同二进制差异提取文件一起加密打包。
他拿起电话。
“韩总。”
“找到了?”
“找到了。”
陆佳杰低声说道,仓库里还有徐工的人在走动。
“47.2KB,藏在ROM区高地址段0x00F9A000起始位置。
前2KB是正常的MAC地址验证代码,与他们公开的安全公告完全对应。
但从第2049字节开始,是一段完整的协议检测和性能降级逻辑。”
“降级方式。”韩栋问道。
“两项,扫描周期从5毫秒拉到50毫秒,但显示面板被篡改,永远回显原始值。
模拟量输出精度从12位截断为8位,触发条件是通信端口接收到非PROFINET、非PROFIBUS、非ASi标准的数据帧。
消退条件是异形帧消失后一千个扫描周期。”
韩栋思索片刻。
“显示面板篡改。”
“对的韩总,这是整段代码里最恶劣的部分。”陆佳杰说出了自己的判断。
“如果只是降级性能,工厂的维修工程师,至少还能通过对比设定值与实际表现来定位问题。
但他们连显示面板都改了,操作员不管怎么检查,屏幕上显示的一切都是正常的。
他只会看到工件废品率在上升,但找不到任何设备端的原因。”
韩栋没有接话。
陆佳杰等了几秒。
“韩总,这份取证报告需要什么格式?”
“两份。”韩栋开口了。
“第一份是纯技术文档,包含完整的二进制差异对比、反汇编代码逐行注释、触发条件分析和降级效果量化评估。
由你个人署名,保密等级最高。”
“第二份呢?”
“第二份翻译成人话。”韩栋冷冷的说道。
“用任何一个初中毕业的车间主任都能看懂的语言,解释清楚这47KB代码在做什么。
标题就叫《你的机床为什么突然开始出废品》。”
陆佳杰一怔。
“这第二份,是给谁看的?”
韩栋没有直接回答这个问题。
“先写完。”韩栋说。
“写完之后,我告诉你它会出现在什么地方。”
电话挂断。
陆佳杰放下手机,看着屏幕上那47.2KB代码的反汇编文本。
四万八千个字节。
比一张软盘的容量还小。
但它有能力让华夏十二万条工业生产线,在某个不可预知的瞬间集体失明。
机器还在转,灯还是绿的,屏幕上的数字一切正常。
只有从设备里流出的零件,会悄无声息地、一个接一个地,变成废品。
仓库外面,彭城的天色已经完全亮了。
初冬的阳光,照在徐工总部园区黄色的重型机械阵列上,显得格外壮观。
陆佳杰合上笔记本电脑,将加密硬盘放入手提箱内衬。
他需要一个安静的房间和十二个小时,把这四万八千个字节的每一条指令,翻译成中文。
……
燕京,启航大厦。
韩栋挂断电话后,没有立刻做下一个动作。
他将椅子转向落地窗,看着窗外灰白色的天际线。
屏幕上的数字还在跳。
已接收更新设备数:43287台。
四万三千台。
这些设备分布在他叫不出名字的工厂里,由他不认识的工人操作,生产着他可能永远不会使用的产品。
但从这一刻起,它们的心脏里都多了四万八千个字节的暗物质。
弗兰克在慕尼黑签下名字的时候,大概以为这把刀是无形的。
陆佳杰刚刚把刀从鞘里抽了出来。
下一步,是让所有人看见刀刃上的血。