第116章 整机测试:软件的致命故障
系统自检进度条停在98%。
任昭的手指悬在确认键上方,屏幕右下角时间显示15:47。沈知遥刚完成最后一次硬件接口复核,摘下手套放进实验服口袋。她走到主控台侧面,点头示意:“FPGA三号槽位连接稳固,供电压差在允许范围内。”
“启动整机测试。”任昭按下指令。
主机风扇转速提升,冷却泵开始循环。大屏切换至全系统运行界面,信号流从底层模块逐级向上汇入中央处理器。雷达阵列进入低功率扫描状态,环境背景噪声以灰点形式分布在三维坐标图中。
一切正常。
直到第37秒。
警报响起。不是蜂鸣器那种断续音,是持续高频的尖锐声。主控屏突然变红,弹出四十七个空中目标标记,全部集中在东南空域,高度从3000米到12000米不等。轨迹呈放射状扩散,运动模式不符合任何已知飞行器特征。
“不对。”沈知遥靠近屏幕,“这些信号没有多普勒偏移,也不是回波延迟产生的。”
任昭调出进程管理器。主算法进程PID被替换为未知模块,占用内存从常规的2.1GB飙升至6.8GB。他尝试强制终止,系统提示“权限拒绝”。重启命令发出后无响应,底层日志显示该模块已获得最高控制权。
林锐的声音从耳机里传来:“我看到了。这不是普通溢出错误。”
他三秒内接入终端,打开调试窗口。代码瀑布快速滚动,他在第三行停下,放大一个嵌套函数。“这里有个递归触发条件,每检测到一次系统自检通过就激活一层。现在它已经完成了七次叠加,正在向核心寄存器写入虚假数据。”
任昭盯着那串代码结构。它伪装成抗干扰补偿算法的一部分,但内部包含时间锁和逻辑跳转。一旦整机测试启动,就会自动释放。
“是有人提前埋进去的。”林锐敲下几行命令,试图隔离模块,“这不是漏洞,是专门设计来破坏系统的。”
任昭立即执行应急预案。他拔掉所有外接网线,切断无线通信模块电源,关闭远程访问端口。主控台只剩本地存储和内部总线连接。
“防止扩散。”他说,“现在只保留基础运行环境。”
林锐继续操作。他新建一个隔离区,把原算法文件拖进去做反编译。五分钟后,他抬起头:“代码里有签名验证机制,我们不能直接恢复旧版本。如果强行加载未经认证的程序,整个系统会自毁。”
沈知遥转身走向自己的工作台。她从抽屉取出一个黑色U盘,插进备用主机。“我昨晚重写了识别算法,用了新的目标筛选逻辑。它不依赖原来的框架,可以直接接管信号处理。”
任昭看向她。
“我没有联网传输,也没有提交记录。”她说,“只是作为应急方案保存下来。现在可以试试。”
林锐立刻准备导入环境。他清空缓存区,关闭所有非必要服务,腾出足够的运行空间。屏幕上出现倒计时窗口:准备就绪,等待授权。
任昭输入双因子密码。系统提示需要第二人生物验证。沈知遥按下手掌,读取成功。
导入程序开始执行。
进度条走到40%时,冷却泵发出异响。电流负载曲线突然跳动,主电源电压下降0.3伏。林锐马上注意到后台有一个隐藏进程正在调用GPU资源。
“它还在活动!”他快速敲击键盘,“那个模块没完全断开,它在利用图形渲染通道维持连接!”
任昭立刻切断GPU供电。屏幕闪烁两下,恢复稳定。导入进度暂停在67%。
“重新初始化显卡驱动。”林锐说,“不然画面会卡死。”
沈知遥手动调整PCI-E通道分配。她打开机箱侧板,拔下显卡重新插紧。再启动时,驱动加载成功。
导入继续。
进度条走完,新算法载入内存。系统提示需要进行一次完整校准,耗时预计八分钟。
“没时间了。”林锐说,“整机测试流程已经被打断,如果我们不能在半小时内恢复运行状态,军方会判定项目失败。”
任昭调出硬件监控面板。天线驱动单元温度上升1.2度,属于正常波动。但信号处理阵列的FPGA芯片结温达到78摄氏度,接近安全上限。
“降低扫描频率。”他说,“用最低功耗模式运行校准。”
沈知遥修改参数。系统接受指令,进入节能状态。校准程序启动,屏幕上出现动态网格,逐点检测接收灵敏度。
林锐一直盯着网络状态栏。虽然物理断开了外部连接,但他设置了虚拟监听节点,模拟真实网络环境,诱使潜在恶意代码暴露行为。
三分钟后,监听器捕获到一次异常数据包。来源地址为空,协议类型无法识别。它试图访问雷达控制寄存器,但被防火墙拦截。
“还在试。”林锐冷笑,“对方知道我们换了算法,但它不确定是不是真的。”
任昭记录下攻击特征。这个数据包的结构和之前发现的逻辑炸弹有相似之处,但加密方式不同。说明攻击者具备持续更新能力。
“不是一次性植入。”他说,“是有组织的远程操控。”
沈知遥完成校准。新算法正式上线。她切换到测试模式,注入一组标准信号。系统成功识别单一目标,过滤掉全部虚假回波。
“初步可用。”她说。
任昭启动短时实战模拟。设定两个高速移动靶标,加入宽带噪声干扰。雷达锁定目标,跟踪轨迹连续,响应延迟低于0.4秒。
“性能达标。”他说。
林锐松了一口气。他摘下耳麦,擦掉额头的汗。突然,他又盯住屏幕一角。
“等等。”他指着电源管理模块的日志,“这里有段异常记录。在系统崩溃前0.8秒,B3冷却泵曾收到一条关闭指令。不是程序自动发出的,是人为操作。”
任昭放大时间轴。那条指令的时间戳精确到毫秒,与主算法被替换的时刻几乎同步。
“先关冷却,再炸软件。”他说,“这是配合行动。”
沈知遥看向设备舱方向。B3泵位于右侧散热组末端,独立供电。要手动发送这条指令,必须拥有高级权限,或者直接接触控制终端。
“内部问题。”林锐声音低了下去,“能进到这里的人不多。”
任昭没有说话。他打开权限日志,查找最近十二小时内的操作记录。大部分都是团队成员的常规调试,但在凌晨4:19,有一条未签名的远程登录尝试,来源IP已被清除。
他翻到更早的数据。三天前,有一次系统升级维护,临时开放了管理员通道。审批记录上签的是赵明远的名字。
“是他放进来的人。”任昭说。
林锐握紧拳头。他想起上次攻击时发现的“黑盾-7”标识,那是军工部内部使用的安全协议代号。
“他们早就准备好了。”他说,“就等我们启动整机测试。”
沈知遥插话:“现在怎么办?继续测试会被干扰,停下来又通不过验收。”
任昭看着主控屏。新算法运行稳定,但整个系统像是站在裂缝上的建筑。不知道下一秒会不会塌。
“我们只能往前走。”他说,“把所有操作转为离线模式。不用网络,不用远程,所有代码手动生成。”
林锐点头。他开始重建本地编译环境。沈知遥则检查每一个传感器的物理连接,确保没有被加装窃听装置。
任昭打开军工复兴系统界面。他输入当前故障描述,请求数学推演支持。系统开始分析逻辑炸弹的构造路径,寻找可能的残留节点。
二十分钟后,推演结果出来。系统标出三个高风险区域:电源管理模块、时钟同步单元、数据打包协议层。这些地方都可能存在隐藏触发机制。
“得一个个排查。”任昭说。
他决定从电源管理开始。这是最基础的部分,一旦出问题,整个系统都会瘫痪。他让林锐编写一段检测脚本,专门扫描固件中的非常规跳转指令。
脚本运行到第二轮时,发现了一个伪装成节能策略的子程序。它会在系统连续运行超过45分钟后,自动降低CPU电压至临界值,导致计算错误。
“又是它。”林锐把它删除,“这东西像虫子,藏得到处都是。”
沈知遥提出建议:“我们能不能做一个假系统?让它以为自己还在运行原来那个,实际上我们在后台换成了新的?”
任昭思考片刻。“可以。用虚拟机搭一个镜像环境,把攻击者的注意力引过去。”
林锐立刻动手。他配置了一台隔离服务器,安装旧版操作系统,接入部分非关键传感器。然后故意留下几个看似严重的漏洞。
“鱼饵做好了。”他说,“就看它们咬不咬钩。”
任昭设置监控程序,一旦虚拟系统被捕获或修改,立即记录攻击方式和来源路径。
此时距离整机测试中断已过去一小时二十三分钟。
主系统仍在低功耗运行,新算法稳定工作。但所有人都知道,这只是暂时的平静。
真正的对抗才刚开始。
沈知遥站起身,去拿新的记录本。她的笔落在桌角,滚了一下,停在任昭的手边。
他捡起来,放回左口袋。红色那支。

