第一章:最终关卡的尸体
“贺明远,你办公室里那具尸体,陆砚白三天前就‘做’出来了,你他妈告诉我这是‘意外’?”
沈渡一把扯下VR头显,掌心全是冷汗。测试舱的环形屏还在闪,最后画面,贺明远那间CEO办公室的地毯上,蜷着一具一比一还原的尸体重建模型——后脑塌陷,左腿以不可能的角度压在身下,白衬衫领口浸透了红色的血。和三天前陆砚白从公司天台坠落的现场一模一样。
通讯器响起来,测试组新人林小满发颤的声音从另一头传来:“沈姐……系统弹红字了,你看到了吗?”
沈渡没回她,她当然看到了。屏幕上那行猩红小字还在跳:“通关条件:找出凶手。失败后果:本场景将于七日后自动全量推送至全部预约用户。 ”
七天。如果通关失败,几百万预约玩家将会目睹一场真人凶案还原直播。
挂掉通讯器,沈渡从测试仓里站了起来。测试室走廊尽头传来脚步声,节奏缓慢。沈渡太熟悉这个步频了——贺明远。
“沈渡。”贺明远停在测试舱门口,“你被开除了。工牌交出来。”
他身后跟着两个安保,其中一个手里拿着塑封袋。
沈渡靠在门框上没动:“贺总,陆砚白死前四十七分钟,有人用他的账号在天台播放了最终关卡的加密语音。你要不要先解释一下,一个‘意外坠楼’的人,怎么会在死前听自己的遗言?”
贺明远的眼神连晃都没晃一下:“这我就不清楚了,但是警方的结论是意外,如果你继续散布不实信息,法务部会多准备一份文件。”他抬起手腕看了一眼表,“工牌,别让我说第三遍。”
沈渡盯着他看了看,接着从脖子上扯下工牌,扔进塑封袋。转身往外走的时候,贺明远的声音从背后传来:“沈渡,你那个测试通道,我已经让人注销了。别想着远程登进去。”
她没回头,只抬了抬右手。
走出大楼自动门的时,手机震了。一条来自公司内网服务器的“系统通知”短信。
内容只有一行字:
“最终关卡隐藏权限已激活。验证方式:掌纹。授权人:陆砚白。授权时间:三年前。备注:别让贺知道你能进。 ”
沈渡站在大门门口,低头又看了看这条短信,无奈的笑了出来。
陆砚白,你他妈死了都不让人省心。
第二章:被开除的人有七天
沈渡租的工作室在城东老纺织厂改造的文创园里,地段便宜,空间还大,方便她将测试机全部带来。将三台备用测试机全部注销并用工作端接口进行测试,在旧版客户端绕过注销验证后,屏幕终于跳出了熟悉的登录界面。
掌纹扫描通过。权限等级:开发者(临时)。
陆砚白三年前把她踢出核心团队那天,做的最后一件事是把她的掌纹写进了只有他能手动触发的隐藏程序——一个连贺明远都不知道存在的后门。沈渡盯着权限说明里那行小字,指甲在桌面上敲了敲。
这种恶趣味,只有他能搞的出来。陆砚白知道贺明远会第一时间清除她的权限,所以故意把进最终关卡唯一的一条路绑在她身上——让贺明远亲手把她推出公司,却推不出这扇门。
“你算准了他会开除我。”沈渡对着屏幕上陆砚白那个灰色离线头像说,“你连我被扫地出门的时间都算准了。”
她调出最终关卡的加密语音文件。属性栏里一行数据让她的瞳孔一缩:播放次数:1。播放者:陆砚白。播放时间:10月17日22时13分。
陆砚白的死亡时间是10月17日23时整。死前四十七分钟,确实是他自己播放了这段语音。
沈渡把文件拖进解码器,点击“分析元数据”。三秒后弹出的信息让她后背贴着椅背慢慢滑下去——文件创建时间:2024年7月。播放设备GPS坐标:公司大楼天台(误差±3米)。
有人在天台上,逼陆砚白亲耳听完了这段语音。
凶手不是在他不知情的时候动手的,而是在确认他“死前知道了什么”之后,才把他推下去的。
沈渡抓起手机拨给老周。片刻后,那头传来服务器机房的低频嗡鸣。沈渡赶忙说道:“老周,三年前事故那天的服务器物理门禁记录,还在不在?”
沉默良久,老周压低声音:“沈渡,你查这个干什么?”
“因为陆砚白死之前,有人让他听了一段他自己三个月前录的遗言。我想知道,那段遗言里到底说了什么,能让一个人听完之后立刻动手杀人。”
老周又沉默了很久。然后他说:“机房门禁记录我备份了。但是沈渡,你得先告诉我,你打算怎么进最终关卡?没有开发者权限,你连音频都解不开。”
沈渡看着屏幕上那个“开发者(临时)”的绿色标识,轻声说:“陆砚白给我留了一扇后门。”
电话那头传来椅子猛地往后一推的声音:“他连这个都算到了? ”
第三章:他死前听了自己的遗言
解码器跑了四个小时。沈渡不敢直接播放完整音频——文件里嵌了位置回传协议,每播放一次,系统就会把播放者的IP坐标发给预设的监控端。贺明远现在一定守着那个监控端。
她只能把音频切成碎片,按频率段分离,再逐段拼接。
凌晨两点,第一段有效语音拼出来了。陆砚白的声音从扬声器里传出来,沙哑低沉:
“贺明远,你杀人的时候,能不能至少先把服务器日志删干净?三年前十月十二号凌晨一点,你远程覆写了事故当天的访问记录。覆写指令是从你办公室的备用终端发出的。你前妻那个空壳公司的法人变更文件,你存在加密盘里,密码是你女儿生日。你连换密码都懒得换,就这水平还灭口?”
沈渡按下暂停。她手心全是汗。
陆砚白录这段话的时候,已经知道自己会死。他用了整整三个月,把贺明远三年前伪造玩家事故报告、套取赔偿金、用空壳公司洗钱的完整链条,全部藏进了最终关卡,分散在各个角落。服务器日志覆写记录藏在背景音的频谱图里,门禁刷卡数据伪装成贴图文件的十六进制尾缀,空壳公司的法人链条被编码成一串看起来像乱码的关卡密码。
而那段加密语音,是所有这些证据的“说明书”。
沈渡把拼好的音频存进物理加密盘,拔掉网线,又用铝箔纸把盘裹了三层。做完这一切,她才发现自己连体裤后背全湿透了。
手机屏幕亮了一下。方澄的消息:“你查到了对吧。陆砚白死之前找过我,让我把一张图藏进最终关的贴图文件里。你来找我,我告诉你图在哪。”
隔了五秒,又来一条:“但是沈渡——来之前最好甩掉身后的尾巴,你工作室楼下那辆黑色商务车,已经停了很久了。 ”
沈渡走到窗边,撩开百叶窗一条缝。楼下便利店门口,一辆黑色别克GL8熄着灯停在卸货区。驾驶座的人没下车,但车窗摇下了一条缝,一点红色的光在缝里明灭。
车里抽烟的人在监视她。
沈渡拉上百叶窗,回头看了一眼桌上裹着铝箔纸的加密盘。陆砚白在遗言里特意说了一句“别一个人听”——她当时以为那是提醒她注意安全。
现在她突然意识到,那句话还有一层意思:别一个人听,因为听完之后,你就不再是局外人了。你会变成第二个目标。
她抓起外套和加密盘,从工作室后窗翻出去,踩着隔壁密室逃脱店招牌的铁架子往下爬。脚刚沾地,手机又震了。林小满发来一张截图,是公司内网刚发的全员邮件,标题加粗标红:
“关于测试总监沈渡涉嫌在游戏中植入恶意程序并窃取商业机密的情况通报。公司法务部已向公安机关报案。 ”
沈渡蹲在文创园后巷的垃圾桶旁边,深秋的风灌进领口,她把加密盘塞进内衣暗袋,紧了紧外套,给方澄回了三个字:
“我过来。 ”
发完消息她抬头看了一眼巷口。那辆黑色别克的车灯亮了,那人已经发现了她不在工作室。
第四章:游戏里藏着一份事故报告
沈渡没往巷口跑。她往巷子深处退了几步,后背贴住密室逃脱店的后门,右手摸到消防梯的横杆,一使劲翻上了二楼平台。黑色别克的车门开了,下来两个人,脚步很急,直奔她工作室的后窗。
她蹲在空调外机后面,等那两人进了楼,才顺着消防梯下到隔壁街面,随便找了辆自行车,骑着就往南门走。
方澄的工作室在文创园南门那栋红砖楼的四层,门口挂着一块手绘木牌,画着一只戴贝雷帽的猫头鹰。门没锁,沈渡推门进去的时候,方澄正坐在电脑前,屏幕上是最终关卡的一张未完成贴图——深紫色夜空下,一扇孤零零的铜门立在荒野中央。
“你来得比我想的快。”方澄没回头,伸手从桌上的烟盒里摸出一根烟,“文创园里有我的监控,从你回来后那辆车就跟着你进来停到你工作室楼下了。”
沈渡刚想说些什么。
“这不重要,”方澄挥了挥手,扇走吐出的烟圈“陆砚白死之前三天找过我,跟我说如果有一天贺明远开始查最终关,让我把这张图给你。”
她把屏幕上的贴图文件另存为原始格式,拷进一个U盘,推到沈渡面前:“图里面藏了东西。他给我图的时候说了一句话,‘方澄,你把这张图放进最终关之后,就别再碰它了。谁问你要,你都别给。除了沈渡。’”
沈渡拿起U盘:“他还说了什么?”
方澄吐出一口烟,眯着眼看她:“他说,‘沈渡这个人,你给她一个BUG,她能顺着BUG把整个系统拆了。你什么都不用告诉她,她自己会找到。’”她顿了顿,“我当时问他,你怎么知道她一定能找到?他说,‘因为她是唯一一个会为了一行报错日志跟我拍桌子的人。’”
沈渡没接话。她把U盘插进自己的加密平板,用十六进制编辑器打开那张贴图。天空盒纹理的数据流末尾,果然嵌了一段非图像数据——一串坐标,精确指向公司大楼地下二层,服务器机房。坐标后面跟着一段NFC密钥的十六进制编码,对应一张物理门禁卡的卡号。
“这张卡号,”沈渡抬头看方澄,“是机房三年前的门禁系统。现在那套系统已经升级了,但老周的备份服务器里一定还存着旧日志。”
方澄弹了弹烟灰:“你要查什么?”
“查三年前十月十二号凌晨,谁刷开了机房门。”
沈渡给老周发了加密消息。二十分钟后,老周回了一段语音,背景里键盘敲得噼里啪啦:“旧系统日志我备份了。三年前十月十二号凌晨两点零七分,机房主门被刷开过一次。刷卡记录对应的卡号,是贺明远的副总权限卡。当时陆砚白的卡没有任何刷卡记录——他那天晚上根本不在公司。但事故报告里写的是‘服务器遭外部入侵’,把锅全甩给了‘不明身份的外部人员’。”
沈渡把方澄那张贴图里的NFC密钥和老周发来的刷卡记录并排放在屏幕上。两者完全吻合。
贺明远在那天凌晨两点一个人进了机房,覆写了日志。
“方澄,”沈渡的声音很平,“你知不知道陆砚白为什么要把这些证据分散藏在游戏里,而不是直接交给警方?”
方澄把烟按灭在易拉罐剪的烟灰缸里,看了她一眼:“你觉得他是那种相信警察的人?”
“不。”沈渡盯着屏幕,“他不相信任何人。把证据藏进游戏,是因为游戏是他唯一完全掌控的东西。他知道贺明远会杀他,但算准了贺明远找不到所有碎片。”
沈渡拔下U盘,转身就往门口走。
方澄在背后喊了一句:“沈渡!”
她停住脚步,没回头。
“你拼出完整遗言之后,”方澄的声音低下去,“别一个人听。 陆砚白那种人,不会只留一把刀。”
第五章:美术总监的贴图藏着一把钥匙
沈渡没有去机房,悄悄回到工作室楼下,看到那辆商务车已经不在便利店门口了。长舒一口气,上楼回到了工作室,发现里面已经被翻了个底朝天。从暖气片后面的墙缝里抠出备用测试终端——陆砚白当年带着核心团队做封闭开发的时候,在每间办公室的隐蔽位置都藏了一台备用机,这事只有他和沈渡知道。
她用老周给的临时密钥登入公司旧系统后台,把方澄贴图里的坐标和门禁卡号交叉比对。结果出来了:那张卡号对应的物理门禁卡,在旧系统里登记的持有人是贺明远,但卡片最后一次被使用的记录,停在三年前十月十二号凌晨两点零七分。之后这张卡就被注销了,注销操作人也是贺明远。
他用自己的卡刷开机房,覆写日志,然后注销卡片,当这张卡从来没存在过。
但陆砚白比贺明远多想了一步。三年前那个晚上,陆砚白不在公司,但他做了一件事——他把机房旧系统的日志,同步备份了一份到游戏开发测试服务器的隐藏分区里。因为那天他远程登录测试服调关卡参数,系统弹了一条“机房主门开启”的告警通知。他当时没在意,随手点了“已知悉”。那条告警的原文和触发日志,被测试服务器自动存档了。
沈渡在隐藏分区里翻出了那份存档。时间戳、刷卡卡号、操作终端IP,全部对得上。贺明远进机房之后做了什么,日志里没有直接记录,但紧接着的一条系统事件显示:三年前事故当天的全部玩家访问记录,在凌晨两点十九分被批量覆写。操作指令来源:机房内网终端。
老周在电话那头听完,沉默了很久:“所以三年前那起事故……是贺明远自己动手把日志洗了,然后对外说是‘外部入侵’。那笔赔偿金……”
“赔给了一个空壳公司,法人是他前妻。”沈渡把方澄之前告诉她的信息接上去,“他前妻去年移民了,那家公司注销了,但转账记录还在陆砚白的加密盘里。贺明远用这笔钱给公司续了命,然后用三年时间把自己洗成了‘带领公司走出危机的功臣’。”
老周声音发涩:“那我女儿……我女儿那件事……”
“你女儿是那起事故的当事人。贺明远伪造的报告里说她‘违规操作导致服务器过载’,把责任推给了一个当时昏迷在医院的女孩。”沈渡闭了一下眼,“老周,陆砚白把这份证据藏在游戏里,不是为了敲诈贺明远。他是想把这件事翻过来。”
电话那头传来老周粗重的呼吸声,隔了很久,他说:“沈渡,你告诉方澄,让她把那张贴图里嵌的第二层数据也解出来。”
沈渡一愣:“第二层?”
“陆砚白那个人,做什么都留后手。他在方澄那张图里嵌的不只是门禁卡号——你让方澄用十六进制编辑器把贴图文件的末尾对齐参数改一位,再读一遍。”
沈渡挂了电话,给方澄发消息。十分钟后方澄回了一张截图:修改对齐参数之后,贴图数据流末尾多出了一段加密字符串。解密后是一句话:
“沈渡,如果你看到这里,说明老周还没被抓。去找林小满。她手里有那份事故报告的原始版本。上面有我的签名。也有她的。 ”
第六章:遗言的第二层
沈渡把拼好的完整音频导进一台断网的旧播放器,用老周的耳机听完了全部内容。前面四分钟全是证据链条:服务器日志覆写记录、门禁刷卡数据、空壳公司法人变更文件、转账流水。贺明远三年来做的每一件事,陆砚白都找到了对应的数字痕迹。
但音频没有结束。
在最后三十秒,陆砚白的语气变了,语速更慢了,像是录音的时候犹豫了很久才按下录制键:
“但是沈渡,如果你听到这里,说明你还没明白——贺明远只是杀我的那个人。真正让那起事故被掩盖三年的,不是我,也不是他一个人。三年前你被踢出核心团队那天,你在会议室拍桌子说‘事故报告里的服务器负载数据对不上’,你记不记得?”
沈渡握着耳机的手慢慢收紧了。
“你走了之后,贺明远让我把你的名字从事故调查组的名单里划掉。我没告诉你就划了。后来他让我在最终的事故报告上签字,我签了。我没告诉你的是,那份报告上的签名栏,最后加了一个名字——林小满。 她是当时的编辑实习生,贺明远让她在‘数据核实人’那一栏签了字。一个实习生,签了一份她根本看不懂的报告。”
沈渡的指甲掐进掌心。
“如果我不签那个字,不把你的名字划掉,贺明远会把我们三个人一起处理掉。沈渡,我毁了你的事业,是为了让你活着。我让林小满签那个字,是因为如果她不签,贺明远会直接伪造她的签名——到时候她连‘被迫’这个理由都用不上。”
陆砚白停了两秒。沈渡听见录音里打火机“咔嗒”一声。
“我把你踢出去,你气了我三年。这三年你一直在测试岗上查BUG,查得比谁都狠。贺明远动不了你,因为你太干净了,干净到他找不到任何把柄。但你越干净,你就越危险。所以我给你留了这扇后门,不是让你替我报仇。是让你活着把这件事翻过来。”
录音结束。
沈渡坐在黑暗里,耳机线缠在手指上,勒出几道白印。她恨了三年的那场“被踢出核心团队”,是陆砚白能想出来的、最刻薄也最彻底的保护——他把所有罪名揽到自己身上,让她恨他,让她离核心团队越远越好,让她在测试岗上安安稳稳地活着。
然后他自己去查贺明远,一个人查了三年,查到贺明远不得不杀他。
老周在电话那头等了很久,轻声说:“那……陆砚白到底是想让你替他报仇,还是想让你替他认罪?”
沈渡把耳机摘下来,揉了揉被压出红印的耳朵:“他想让我替他翻案。报仇和认罪都不是他的风格。他那种人,只在乎结果对不对。”
她站起来,把加密盘重新塞进内衣暗袋,又从抽屉里翻出一把折叠刀别在腰间:“老周,林小满现在人在哪?”
“公司宿舍。贺明远今天下午给她发了调岗通知,让她明天去法务部‘协助调查’。”
沈渡看了一眼时间。凌晨三点四十。距离天亮还有两个多小时。
“我去找她。老周,你把服务器备份里所有跟三年前事故相关的文件打包,加密之后存到三个不同的云盘里。如果我明天中午之前没联系你,你就把下载链接发给方澄,她知道该发给谁。”
第七章:凶手先动手了
林小满住在公司宿舍六楼,一间朝北的次卧,窗户正对着垃圾站。沈渡从消防通道摸上去的时候,整栋楼只有两间房还亮着灯:一间是林小满的,另一间在一楼,窗帘缝里透出人影晃动——贺明远派人守住了宿舍楼出口。
沈渡敲了三下门,两短一长。门开了一条缝,林小满露出半张脸,眼睛肿得厉害,但看到是沈渡之后,她把门拉开了:“沈姐,我一直在等你。”
房间里堆满了纸箱,林小满已经收拾好了行李。她递给沈渡一台旧平板,屏幕上是一份扫描件——三年前的事故报告,原始版本。末尾签名栏里,“陆砚白”三个字签得龙飞凤舞,旁边紧挨着“林小满”三个稚嫩的小字。
“他让我签的时候说,‘小满,你签了这个字,以后可能会恨我。但你不签,明天就有人替你签,到时候你连恨的机会都没有。’”林小满的声音发颤,“我签了。后来我才知道这份报告是假的。但我不知道该怎么办,陆砚白跟我说,‘你什么都别做。等有一天沈渡来找你。’”
沈渡蹲下来,平视她的眼睛:“林小满,你手里这份扫描件,有没有发给过别人?”
林小满摇头:“陆砚白说不能发给任何人,只能当面交给沈渡。”
“好。”沈渡站起来,把平板收进外套内袋,“你现在跟我走。从消防通道下楼,老周在楼后面接应。”
两人刚走到门口,沈渡的手机屏幕亮了。公司全员邮件系统强制弹窗,标题加粗标红,发件人:贺明远。
“关于测试总监沈渡涉嫌植入恶意程序、窃取商业机密并破坏公司服务器系统的情况通报。 经初步调查,沈渡利用职务便利在《第七夜》最终关卡中植入非法数据包,意图在游戏上线日实施破坏。公司法务部已向公安机关报案。请全体员工配合调查。”
紧接着是第二条弹窗,来自游戏后台系统:“最终关卡倒计时调整通知:因安全事件应急处理需要,关卡自动推送时间由原定‘七日后’提前至‘48小时后’。 ”
四十八小时。贺明远把倒计时砍掉了一大半。
沈渡骂了一声,拽着林小满就往消防通道跑。刚推开防火门,就听到汽车熄火的声音,沈渡往下看,发现楼下停着和工作室一模一样的别克,并且有两个人安保人员已经从车上下来了。
沈渡把林小满往上一层的楼梯间推:“往上走!天台!”
林小满抓着平板电脑,连滚带爬地往上跑。沈渡摸出手机给老周发了定位,然后蹲在防火门后面,把折叠刀打开,别在右手袖口里。
防火门被推开了。一个安保探进头来,看见沈渡蹲在台阶上,愣了一下。沈渡冲他笑了一下,站起来,右手自然垂在身侧:“两位大哥,贺明远给你们开多少工资?我出双倍,你们现在下楼,当没见过我。”
安保对视了一眼。后面那个掏出对讲机:“人找到了,在天台楼梯间。”
沈渡叹了口气,右手一抖,折叠刀从袖口滑进掌心:“行吧。那我就只能走测试流程了。”
她反手把刀尖扎进消防软管箱的玻璃面板,拎出灭火器,拔掉保险销,对着两个安保的脸按下了压把。
白色干粉轰然喷出。沈渡转身就跑,一边跑一边给老周打电话:“老周!楼下那辆别克,把轮胎给我扎了! ”
第八章:最终关卡的真正功能
老周接应沈渡和林小满的时候,那辆黑色别克正歪在文创园北门的路牙子上,四个轮胎瘪了仨,老周拎着一把从修车铺借来的扎胎锥,蹲在花坛后面喘气。
三人窝在老周那辆十年车龄的五菱宏光里,沈渡把林小满的平板连上车载充电器,开始比对原始事故报告和最终关卡里藏的证据链。对到一半,她突然停下来,盯着屏幕看了很久。
“怎么了?”林小满凑过来。
“陆砚白在最终关卡里留了一个隐藏功能。”沈渡把后台代码翻到最底层,那是一段被三层加密包裹的脚本,运行条件写得很清楚:当最终关卡被“非授权方式”触发全量推送时,自动追加一段不可撤销的区块链广播。 广播内容:完整加密语音、服务器日志覆写记录、门禁刷卡数据、空壳公司法人链条、原始事故报告扫描件。推送目标:游戏全部预约用户,同步抄送警方公开邮箱和三家行业调查媒体。
“他不是让你偷偷破案。”老周听明白了,声音发沉,“他设计的是——只要贺明远敢让这个关卡上线,不管以什么方式,真相就会自动炸开。贺明远杀他,是因为他把整个游戏变成了一个拆不掉的引爆装置。”
沈渡点头:“陆砚白根本没打算让我‘通关’。他算准了贺明远会提前推送关卡来灭口,所以他把‘提前推送’本身做成了触发条件。贺明远越是急着删证据,证据就越快被公开。 ”
“那我们现在怎么办?”林小满问,“关掉推送?”
沈渡把代码往下翻,翻到最后一屏,停住了。屏幕上有一行中文注释,用陆砚白一贯潦草的手写体转化成了代码注释格式:
“唯一可中断进程的方式:由‘被授权测试者’手动确认‘最终关卡存在致命错误,终止发布’。被授权测试者:沈渡。 ”
车里安静了十秒。
老周先开口:“你确认‘终止发布’,真相就永远不会被公开。贺明远会继续当他的CEO,你那些证据全烂在服务器里。”
“但如果我不终止,”沈渡看着窗外,天边已经开始泛灰了,“四十八小时之后,几百万玩家会同时收到一条‘游戏通关奖励’——里面装着三年前的事故报告、贺明远的犯罪证据、陆砚白的遗言,还有林小满的签名。她会被人肉、被网暴、被当成‘共犯’挂在热搜上三天三夜。”
林小满攥着平板的手指节发白。
沈渡把代码页面关了,转头看她:“陆砚白给你留了第三条路。他没写在代码里,但他把原始事故报告给你了。他说‘等沈渡来找你’。他知道我会找到你,也知道你会把这份报告给我。”
她伸手拍了拍林小满的肩膀:“我不确认终止,也不触发全量推送。我手动重写推送目标。 ”
第九章:沈渡的选择
沈渡在最终关卡的后台里找到了陆砚白留下的手动推送目标编辑接口。这段代码写得极其隐蔽,藏在关卡背景音的频谱图注释里,如果不是把整个文件拆成字节流逐位排查,根本不可能发现。
“他把定向推送的权限也留给我了。”沈渡把目标地址列表拖进编辑框,删掉了“全部预约用户”,换成了三组地址:市公安局经侦支队公开邮箱、游戏行业监管部门的举报通道、两家跑调查报道的媒体记者工作邮箱。
“全量推送是把炸弹扔进人群里。定向推送是把炸弹放在该炸的地方。”她一边敲键盘一边说,“贺明远三年前洗日志、造假报告、套赔偿金,这些事该让经侦管。游戏上线日故意推送凶案还原场景,这是行业监管的事。至于公众知情权——那两家媒体的记者跟了游戏行业事故三年了,他们知道该怎么报。”
老周问:“那你呢?你手动操作之后,系统会留记录。”
沈渡敲下最后一行命令,回车键按下去的时候,她手腕上那串物理密钥卡轻轻响了一声:“陆砚白把‘被授权测试者’写的是我的名字。我操作之后,后台日志里会有一条‘沈渡手动修改推送目标’的记录。删不掉。”
“那贺明远反咬你一口怎么办?”
“他咬不动。”沈渡从怀里摸出那张加密盘,扔给老周,“这里面是全部证据的原始文件。你天亮之后去经侦支队,直接报案。报案人写你,别写我。贺明远告我‘植入恶意程序’,他得先解释清楚,一个被开除的人,为什么能用手掌纹登录开发者后台——那个后门是陆砚白留的,跟我没关系。他告我‘窃取商业机密’,可这些证据指向的是他三年前的刑事犯罪。你觉得经侦会先查谁?”
林小满突然插话:“沈姐,那我呢?我签过那份假报告……”
沈渡看了她一眼:“你是被胁迫签字的实习生。陆砚白在遗言里专门留了一段给你——他说,‘林小满签字那天,贺明远跟她说的是“你不签,明天被开除的就是你全家”。这话有录音。’”
林小满愣住了:“录音?”
“他从来不信任何一面墙是实心的。”沈渡说,“他在自己办公室藏了一支录音笔,录了三年。贺明远逼他签字、逼他改报告、威胁他‘不听话就让你跟沈渡一起滚’——全在里面。他把录音文件藏在最终关卡的铜门贴图里,就是方澄画的那张。”
沈渡站起来,把加密盘交给老周,又把平板塞回林小满手里:“老周去报案。小满把原始报告和录音文件整理成一份时间线文档,发给我。我去做一件事。”
“什么事?”两人同时问。
沈渡推开车门,深秋清晨的冷风灌进来,吹得她连体裤下摆猎猎作响:“去机房。 贺明远还有四十六小时就要推送关卡了。我得在他动手之前,把定向推送的目标地址锁死。顺便——”
她回头看了一眼五菱宏光里那两张仰着的脸,突然笑了一下,嘴角弯的弧度和陆砚白生前那种刻薄的笑一模一样:
“顺便告诉他,陆砚白死了,但他留的BUG还在跑。 ”
第十章:最后一扇门
沈渡进机房比想象中顺利。老周给的临时密钥能打开地下二层消防通道的门,物理门禁系统去年升级的时候,旧系统的备用读卡器没拆干净,还挂在机柜背后吃灰。沈渡把方澄贴图里那张NFC卡的数据写进空白卡,在读卡器上贴了一下,绿灯亮了。
机房里的冷风扑面而来,服务器指示灯密密麻麻地闪成一片。沈渡找到最终关卡的主控终端,坐下,开始锁定推送目标地址。
键盘敲到第三行的时候,机房门口传来皮鞋踩水磨石地面的声音。
贺明远一个人来的。西装外套没穿,白衬衫袖口挽到手肘,手里拎着一台平板。他站在机柜走廊尽头,看着沈渡的背影,语气居然很平静:“你比你表面看起来聪明。”
“你比你表面看起来蠢。”沈渡没回头,手指继续在键盘上跳,“三年前你进这个机房洗日志的时候,不知道陆砚白远程登录了测试服吧?系统弹了一条机房开门告警,他顺手点了‘已知悉’,那条告警的原文和触发日志被测试服务器自动存了档。你洗完日志以为天下太平,实际上你动手的整个过程,被一台你都不知道存在的服务器记了三年。”
贺明远沉默了几秒。然后他笑了,往前走了两步:“沈渡,你按下确认,定向推送发出去,你自己也完了。后台日志会记下你的操作记录。我可以告你非法入侵服务器、破坏计算机信息系统。你手里那些证据,法官会信一个‘被开除之后怀恨报复的前员工’?”
沈渡终于转过身来。她坐在转椅上,双手抱臂,腰间的密钥卡叮当响了一声:“贺总,你告我之前,得先解释一件事——我被开除当天,你让人注销了我的测试通道。那我今天怎么还能坐在这里? ”
贺明远的笑容僵了一瞬。
“你注销的是‘沈渡’这个账号名下的所有权限。但陆砚白三年前把我的掌纹写进了一个隐藏系统,那套系统的授权层级比你高。你当CEO这两年,改了多少次后台权限表?一次都没发现那个后门吧?”沈渡往前倾了倾身子,“你连陆砚白留了什么都不知道,就敢杀他。你杀他之前,有没有想过他那种人,会不给自己留后手? ”
贺明远的脸色终于变了。他往前跨了一步,伸手要去按主控终端的电源键。沈渡比他快了一步,手掌拍在回车键上。
屏幕弹出一行绿色提示:“定向推送目标已锁定。不可撤销。距执行剩余:1小时42分钟。 ”
贺明远的手停在半空。
沈渡站起来,和他隔着一台机柜对视:“你还有一小时四十二分钟。你可以现在下楼跑路,也可以继续站在这里跟我吵。但老周已经在经侦支队了,你前妻的空壳公司流水、你洗日志的IP记录、你逼陆砚白签字的录音,全在他手里。你下楼的时候要是看见警车,别意外。”
贺明远盯着她看了十秒。然后他转身就走,皮鞋声越来越快,最后跑了起来。
沈渡靠回椅背,长长地吐了一口气。她看了一眼屏幕上的倒计时,摸出手机给方澄发了条消息:
“铜门开了。 ”
第十一章:尾声
一年后。
城西新开的一家独立游戏工作室,前台墙上挂着一块手绘木牌,画着一只戴贝雷帽的猫头鹰,旁边一行小字:“渡舟工作室”。
沈渡坐在工位上,身上穿着件新换的烟灰色工装连体裤,左袖还是卷到肘部以上,但腰间那串物理密钥卡少了一大半——现在只剩三张,一张是她自己工作室的门禁卡,一张是老周送她的“最佳报案人”纪念卡,还有一张是方澄画的《第七夜》未上线版本的通关纪念卡,卡面上印着一扇铜门。
她的第一款独立游戏今天上线。游戏名叫《测试者》,流程只有十五分钟,没有战斗,没有解谜,玩家扮演一个测试员,在一间空房间里找BUG。最终关卡是一间空荡荡的办公室,桌上放着一张打印出来的旧工牌,署名栏里,“沈渡”两个字第一次出现在“关卡设计”后面。
屏幕角落有一行小字,玩家通关之后才会显示:“还行。这次没BUG。 ”
林小满从隔壁工位探过头来:“沈姐,玩家评论第一条:‘这游戏作者是不是被前公司坑过?字里行间全是怨气。’”
“回他:怨气是创作的第一生产力。 ”沈渡头也没抬。
手机震了一下。老周发来的消息,配了一张新闻截图:贺明远因伪造公文、职务侵占、故意杀人罪,一审被判无期。新闻标题下面,老周加了一句话:“我女儿明年大学毕业,学的游戏设计。”
沈渡盯着那条消息看了几秒,打了两个字回过去:“招人。 ”
方澄从门口探进来半个身子,手里晃着两杯奶茶:“沈渡,新项目的关卡设计稿你看了没?美术那边问你,最终BOSS战要什么风格?”
沈渡接过奶茶,吸了一口,想了想:“别搞BOSS战。 让玩家最后打一架,打完发现BOSS是自己三年前写的BUG日志。打赢了日志不会消失,但玩家可以给它加一行注释。”
方澄挑了挑眉:“注释写什么?”
沈渡拿起桌上的数位笔,在奶茶杯的吸管包装纸上划了三个字,翻过来给方澄看:
“已修复。 ”
方澄看着那三个字,笑出了声:“陆砚白要是活着,肯定得说你这设计‘矫情’。”
“他说他的。”沈渡把吸管包装纸揉成一团扔进垃圾桶,转身对着屏幕继续敲代码,“我负责修BUG。他负责在天上看着。”
窗外的阳光照进来,落在她工位旁边那把空椅子上。椅背上搭着一件深灰色的旧外套,左袖口磨得发白,口袋里露出一角皱巴巴的录音笔。