第1章
末世代碼:校園覺醒者
:尋常的午后,江城大學(xué)計(jì)算機(jī)學(xué)院三樓機(jī)房。,空氣里彌漫著塑料加熱后的微焦味和隱約的泡面氣息。林逸坐在靠窗的第三排,屏幕上密密麻麻的代碼像蟻群般緩慢爬行——他在調(diào)試一個(gè)圖像識(shí)別算法的邊界檢測(cè)模塊。。梧桐樹剛抽出嫩綠的新葉,籃球場(chǎng)上傳來斷續(xù)的運(yùn)球聲,遠(yuǎn)處圖書館的玻璃幕墻反射著慵懶的陽光。一切平靜得近乎無聊。,視線從屏幕上移開,習(xí)慣性地活動(dòng)了一下僵硬的脖頸。這是他連續(xù)編程的第七個(gè)小時(shí),為了趕在導(dǎo)師規(guī)定的deadline前完成項(xiàng)目。他的工位上貼著一張便利貼,上面用潦草的字跡寫著:“優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)——精度提升0.3%即達(dá)標(biāo)?!?3%。這個(gè)數(shù)字在他腦海里盤旋了三天?!傲忠?,還不去吃飯?”隔壁座位的張濤湊過來,手里晃著飯卡,“食堂三點(diǎn)的土豆牛肉限量供應(yīng),去晚了可就沒了。馬上?!绷忠蓊^也不抬,手指在鍵盤上飛舞,“還差最后一段邊界條件判斷?!?br>“你啊,遲早得頸椎病。”張濤搖搖頭,起身時(shí)瞥了眼林逸的屏幕,“這什么玩意兒?黑底白字,跟黑客帝國似的?!?br>
“圖像識(shí)別的預(yù)處理模塊?!绷忠莺?jiǎn)潔地回答,目光沒有離開屏幕,“用OpenCV做的邊緣檢測(cè),但銳化過度會(huì)導(dǎo)致噪點(diǎn)增加……”
“停停停,學(xué)霸饒命?!睆垵e起雙手做投降狀,“我就一寫前端頁面的,你這深度學(xué)習(xí)的天書我聽不懂。走了啊,真不給你帶飯?”
“不用。”林逸終于敲下最后一個(gè)分號(hào),按了編譯鍵。
程序開始運(yùn)行。進(jìn)度條緩慢推進(jìn):10%...30%...65%...
就在這時(shí),異常發(fā)生了。
第二節(jié):異常的代碼流
進(jìn)度條卡在78%不動(dòng)了。
林逸皺眉,這不應(yīng)該。他的算法經(jīng)過三次優(yōu)化,理論上不可能在這個(gè)節(jié)點(diǎn)卡頓。他移動(dòng)鼠標(biāo)想要調(diào)出任務(wù)管理器,卻發(fā)現(xiàn)光標(biāo)滯澀得像陷進(jìn)了泥沼。
緊接著,屏幕上原本規(guī)整的代碼行開始扭曲。
不是視覺錯(cuò)覺——字符真的在移動(dòng)。黑色的#號(hào)注釋行像墨跡般暈染開來,白色的函數(shù)名閃爍著不穩(wěn)定的熒光,大括號(hào)和小括號(hào)從行末脫落,在屏幕上漂浮、旋轉(zhuǎn)、重組。
“什么鬼……”林逸下意識(shí)地摘下眼鏡擦了擦,重新戴上。
異常沒有消失,反而愈演愈烈。
不只是他的電腦。
機(jī)房里的七十二臺(tái)計(jì)算機(jī),無論處于開機(jī)還是休眠狀態(tài),屏幕在同一瞬間亮起刺眼的白光。學(xué)生們發(fā)出驚呼——有人正在寫論文,有人在看視頻,有人在打游戲——但所有內(nèi)容都被強(qiáng)制清空,取而代之的是一個(gè)簡(jiǎn)潔到詭異的界面。
純黑**。
中央是一行熒綠色的文字,使用了一種林逸從未見過的字體,筆畫鋒利得像刀刻:
系統(tǒng)初始化中...
“病毒?”前排的女生尖叫起來,“我的論文!我寫了三個(gè)小時(shí)的論文!”
“我游戲掉線了!”
“強(qiáng)制彈窗?***在搞什么?”
機(jī)房陷入混亂。有人狂按電源鍵,有人試圖拔電源,但屏幕紋絲不動(dòng)。那行字像烙印般刻在每塊顯示屏上,散發(fā)著不祥的幽光。
林逸沒有動(dòng)。
他的眼睛死死盯著屏幕,瞳孔因?yàn)檎痼@而微微放大。在其他人只能看到那行文字的時(shí)候,他看到了更多——文字背后,有數(shù)據(jù)在流動(dòng)。
不是普通的二進(jìn)制流,而是某種……結(jié)構(gòu)化的信息束。熒綠色的字符像是浮在水面的冰山一角,而水下是龐大到令人窒息的數(shù)據(jù)架構(gòu)。林逸的“代碼視覺”——那個(gè)從小困擾他、讓他看任何電子屏幕都會(huì)看到背后數(shù)據(jù)流的“毛病”——此刻正以前所未有的清晰度運(yùn)轉(zhuǎn)。
他看到了層級(jí)。
最表層是用戶界面,往下是交互邏輯層,再往下是數(shù)據(jù)封裝層,然后是指令集、協(xié)議棧、內(nèi)核調(diào)用……層層嵌套,精密得像瑞士鐘表。但這個(gè)架構(gòu)太陌生了,完全不同于他熟悉的任何操作系統(tǒng)或應(yīng)用程序框架。
“這不是病毒?!绷忠莸吐曊f,聲音只有自已能聽見,“這是……某種全新的系統(tǒng)?!?br>
就在這時(shí),屏幕上的文字變了。
第三節(jié):無法拒絕的邀請(qǐng)
初始化完成
歡迎來到《末世代碼》
全球服務(wù)器同步中...
當(dāng)前在線玩家:0/7,894,326,541
全球玩家數(shù)?林逸的心臟猛地一跳。七十八億——這接近地球總?cè)丝凇?br>
機(jī)房里突然安靜了。所有人都看到了那個(gè)數(shù)字,空氣仿佛凝固了。窗外,籃球場(chǎng)的運(yùn)球聲不知何時(shí)已經(jīng)停止,取而代之的是遠(yuǎn)處傳來的、此起彼伏的驚叫聲。
不只機(jī)房。整棟教學(xué)樓,整個(gè)校園,整座城市——所有電子設(shè)備都在顯示同樣的界面。
手機(jī)、平板、筆記本電腦、臺(tái)式機(jī)、商場(chǎng)大屏、銀行ATM機(jī)、車載導(dǎo)航……一切有顯示屏的設(shè)備,此刻都成了這個(gè)陌生系統(tǒng)的終端。
林逸的手機(jī)在口袋里震動(dòng)。他摸出來,看到自已的小米手機(jī)屏幕上,同樣顯示著那幾行字。他想關(guān)機(jī),長按電源鍵——無效。想拔電池——現(xiàn)在的手機(jī)哪有電池可拔。
“開什么玩笑!”后排一個(gè)男生猛地站起,把筆記本電腦重重合上。
屏幕穿透了塑料外殼,那幾行字直接投射在閉合的筆記本電腦表面,像全息影像般懸浮著。
物理隔絕無效。
系統(tǒng)說明載入中...
新的文字出現(xiàn)了,以一種平鋪直敘、不帶任何情感的語氣:
“致全體人類參與者:”
“您已被選中參與文明篩選測(cè)試《末世代碼》?!?br>
“測(cè)試規(guī)則如下:”
“一、強(qiáng)制登錄。所有18至22周歲人類個(gè)體必須參與?!?br>
“二、真實(shí)映射。測(cè)試中發(fā)生的一切將影響現(xiàn)實(shí)維度。”
“三、死亡即終局。測(cè)試中死亡將導(dǎo)致腦功能永久終止?!?br>
“四、能力可繼承。測(cè)試中獲得的部分能力可于現(xiàn)實(shí)中使用?!?br>
“五、時(shí)間流速比。測(cè)試內(nèi)時(shí)間流速為現(xiàn)實(shí)的三倍?!?br>
“六、最終目標(biāo):生存,進(jìn)化,通過考核?!?br>
“您有十分鐘選擇是否登錄?!?br>
“倒計(jì)時(shí)開始:09:59...”
死寂。
絕對(duì)的死寂籠罩了機(jī)房。有人張著嘴,卻發(fā)不出聲音。有人手中的水杯滑落,在地上摔得粉碎,但沒有人低頭去看。
林逸感覺自已的手心在出汗。他的大腦在飛速運(yùn)轉(zhuǎn),逐條分析那六條規(guī)則:
強(qiáng)制登錄——意味著無法逃避。
真實(shí)映射——游戲會(huì)影響現(xiàn)實(shí)。
死亡即終局——不是游戲,是生死考驗(yàn)。
能力可繼承——超現(xiàn)實(shí)元素。
時(shí)間流速比——緊迫感加劇。
最終目標(biāo)——含糊其辭,充滿危險(xiǎn)暗示。
“騙人的吧……”張濤的聲音在顫抖,“這肯定是哪個(gè)黑客組織搞的惡作劇,對(duì)不對(duì)?電影里常有的那種……”
沒人回答他。
窗外的驚叫聲越來越密集。林逸站起身走到窗邊,看到校園里已經(jīng)亂成一團(tuán)。學(xué)生們從各個(gè)教學(xué)樓涌出,舉著手機(jī)像舉著求救信號(hào)。操場(chǎng)上,一個(gè)男生正試圖用石頭砸碎自已的手機(jī),但屏幕上的倒計(jì)時(shí)依然在跳動(dòng)。
09:12...09:11...09:10...
林逸看向自已的手機(jī)。倒計(jì)時(shí)同步進(jìn)行。他想關(guān)掉它,但所有操作都無效。他甚至嘗試了開發(fā)者模式、強(qiáng)制重啟、恢復(fù)出廠設(shè)置——系統(tǒng)紋絲不動(dòng),仿佛這行文字已經(jīng)燒進(jìn)了硬件底層。
“***呢?找***!”有人喊道。
幾個(gè)學(xué)生沖向機(jī)房門口,但門從外面被推開了。教計(jì)算機(jī)組成原理的李教授站在門口,臉色蒼白如紙。他手里拿著一臺(tái)平板電腦,屏幕同樣亮著那幾行字。
“所有通訊中斷?!崩罱淌诘穆曇舾蓾?,“手**不出去,網(wǎng)絡(luò)全部癱瘓,連校內(nèi)廣播系統(tǒng)都被……接管了?!?br>
他舉起平板,讓所有人看到屏幕上新增的一行小字:
全球通訊協(xié)議已重寫
物理隔絕嘗試:3,214,887次
成功次數(shù):0
“物理隔絕……”林逸喃喃重復(fù)這個(gè)詞。他想起剛才那個(gè)合上筆記本的男生。系統(tǒng)用了“物理隔絕嘗試”這個(gè)表述——這意味著,在過去的幾分鐘里,全球有超過三百萬次試圖用物理方式破壞設(shè)備的嘗試。
全部失敗。
“這到底是什么技術(shù)?”一個(gè)戴眼鏡的女生帶著哭腔問,“怎么可能同時(shí)控制所有設(shè)備?這違反物理定律……”
“不違反?!绷忠萃蝗婚_口。
所有人都看向他。
“如果它重寫了底層協(xié)議?!绷忠葜钢聊簧稀叭蛲ㄓ崊f(xié)議已重寫”那行字,“如果它在硬件層面植入了新的固件,如果它的信號(hào)傳輸方式超出了我們現(xiàn)有的電磁頻譜范圍……”
他說不下去了。因?yàn)檫B他自已都覺得這些解釋牽強(qiáng)。什么樣的技術(shù)能在一瞬間,無差別地控制全球每一臺(tái)電子設(shè)備?而且是在不破壞設(shè)備原有功能的前提下?
除非……這不是地球的技術(shù)。
這個(gè)念頭讓林逸的后背升起一股寒意。
**節(jié):十分鐘倒計(jì)時(shí)
倒計(jì)時(shí)走到07:34。
機(jī)房里開始有人崩潰。一個(gè)女生蹲在墻角低聲啜泣:“我想回家……我想給我媽打電話……”
“冷靜!都冷靜!”李教授提高聲音,但他自已的手也在抖,“這可能是一次……大規(guī)模網(wǎng)絡(luò)攻擊。**一定會(huì)采取措施,軍隊(duì)、網(wǎng)絡(luò)安全部門……”
他的話被一陣急促的警報(bào)聲打斷。
不是來自設(shè)備,而是來自窗外。校園廣播塔的喇叭突然發(fā)出尖銳的鳴響,緊接著是一個(gè)機(jī)械的、沒有感情的女聲,用中文重復(fù)播報(bào):
警告:檢測(cè)到大規(guī)模拒絕登錄行為
根據(jù)規(guī)則一,強(qiáng)制登錄為必須項(xiàng)
首次懲罰演示將在60秒后執(zhí)行
演示對(duì)象:全球范圍內(nèi)隨機(jī)抽取的拒絕登錄者
演示方式:腦功能終止
廣播重復(fù)了三遍。
每一次重復(fù),空氣就冷一分。
“它說什么?”張濤抓住林逸的胳膊,手指冰涼,“懲罰演示?腦功能終止?那是什么意思……”
林逸知道那是什么意思。規(guī)則三寫得很清楚:死亡即終局。腦功能終止——就是死亡。
倒計(jì)時(shí)還在繼續(xù):06:15...06:14...
機(jī)房里有人開始往門口擠?!拔乙鋈ィ∥乙x開這里!”
“別出去!”李教授試圖阻攔,但人群已經(jīng)失控。十幾個(gè)學(xué)生涌向門口,推搡著、叫喊著想要逃離這個(gè)被電子設(shè)備包圍的空間。
林逸沒動(dòng)。他依然站在窗邊,看著校園里的混亂。他看到有人試圖開車離開,但車載顯示屏亮著同樣的界面;有人跑向校門,但在門口停住了——校門外的街道上,同樣的混亂正在上演。
無處可逃。
倒計(jì)時(shí)走到05:00。
廣播塔再次響起:
懲罰演示倒計(jì)時(shí):30秒
校園里,所有人都停下了動(dòng)作。學(xué)生們抬頭看向廣播塔,臉上寫滿恐懼。有人跪了下來,有人緊緊抱住身邊的人,有人雙手合十開始祈禱。
林逸看到對(duì)面教學(xué)樓的一扇窗戶里,一個(gè)男生正瘋狂地用椅子砸向自已的電腦。一下,兩下,三下——顯示屏碎了,但那些文字穿透了破碎的屏幕,投射在墻壁上。
物理隔絕無效。
20秒
林逸的心臟開始狂跳。他的理性告訴他,這可能是某種全息投影技術(shù),可能是集體幻覺,可能是精心策劃的****——但另一個(gè)聲音在他腦海里尖叫:不,這是真的。那些數(shù)據(jù)流的結(jié)構(gòu)太精密了,精密到超出了人類現(xiàn)有技術(shù)的極限。
10秒
機(jī)房里,有人捂住了眼睛。
9
林逸深吸一口氣,握緊了口袋里的手機(jī)。
8
窗外的天空依然湛藍(lán),云朵緩慢飄移。世界看起來那么正常。
7
除了那些無處不在的熒綠色文字。
6
除了空氣中彌漫的、幾乎實(shí)質(zhì)化的恐懼。
5
林逸突然想起父母。他們?cè)谒畾q時(shí)死于車禍,留給他一套房、一筆保險(xiǎn)金,和一個(gè)永遠(yuǎn)無法解答的問題:為什么那天他們要臨時(shí)改道,走上那條從未走過的山路?
4
如果他們還活著,現(xiàn)在會(huì)怎么做?
3
母親會(huì)讓他保持冷靜。父親會(huì)說:先觀察,再行動(dòng)。
2
觀察。對(duì),觀察。
1
林逸睜大眼睛,強(qiáng)迫自已看向校園的每一個(gè)角落。他要看到“懲罰演示”到底是什么。
0
什么都沒發(fā)生。
至少,在最初的五秒鐘里,什么都沒發(fā)生。
然后,尖叫聲同時(shí)從十幾個(gè)地方響起。
第五節(jié):第一批犧牲者
林逸看到了。
就在他正下方的教學(xué)樓門口,一個(gè)穿著紅色外套的女生突然僵住了。她前一秒還在往門外跑,下一秒就直挺挺地倒了下去,像斷了線的木偶。
沒有流血,沒有外傷。她就那么倒在地上,眼睛睜得很大,看著天空,瞳孔已經(jīng)散開。
周圍的人群炸開了鍋。有人沖過去想扶她,但手剛碰到她的頸動(dòng)脈就猛地縮回——“沒脈搏了!”
不止她一個(gè)。
林逸轉(zhuǎn)動(dòng)視線,在短短十幾秒內(nèi),看到了至少七個(gè)倒下的人。分布在校園的不同角落,有男有女,有學(xué)生有教職工。他們唯一的共同點(diǎn)是:倒下前都拿著手機(jī)或平板,屏幕上是《末世代碼》的登錄界面。
而他們都選擇了……拒絕登錄?
林逸猛地看向自已的手機(jī)。倒計(jì)時(shí)還在繼續(xù):04:22...04:21...
拒絕登錄就會(huì)死。系統(tǒng)用最殘酷的方式證明了這不是玩笑。
“他們死了……”張濤的聲音從身后傳來,帶著哭腔,“林逸,他們真的死了……我看到王老師倒了,教英語的王老師……”
林逸認(rèn)得王老師。一個(gè)總愛穿碎花裙子的中年女人,說話溫柔,去年還指導(dǎo)過他參加英語**比賽。
現(xiàn)在她躺在一號(hào)教學(xué)樓前的臺(tái)階上,身旁散落著一沓教案。
懲罰演示結(jié)束
廣播再次響起,機(jī)械女聲平穩(wěn)得像在播報(bào)天氣預(yù)報(bào):
演示對(duì)象:7,894人
成功登錄率提升:31.7%
七千八百九十四人。
全球范圍內(nèi),就在剛才的三十秒里,有將近八千人因?yàn)榫芙^登錄而死亡。
林逸感到一陣惡心。他扶住窗臺(tái),深呼吸,強(qiáng)迫自已冷靜。數(shù)字。他需要關(guān)注數(shù)字。七千八百九十四這個(gè)數(shù)字很重要——不是整數(shù),說明是精確統(tǒng)計(jì);三十一秒內(nèi)全球同步執(zhí)行,說明系統(tǒng)有實(shí)時(shí)監(jiān)控每個(gè)個(gè)體的能力。
還有“成功登錄率提升31.7%”——系統(tǒng)在收集數(shù)據(jù),在調(diào)整策略。這不是一次性的****,而是一個(gè)……正在進(jìn)行中的項(xiàng)目。
倒計(jì)時(shí):03:45...03:44...
機(jī)房里,有人開始操作電腦。屏幕上,登錄界面下方出現(xiàn)了兩個(gè)按鈕:
確認(rèn)登錄
拒絕登錄
紅色的“拒絕”按鈕在閃爍,像警告,又像**。
“不能點(diǎn)拒絕……”李教授的聲音嘶啞,“大家都看到了,點(diǎn)拒絕會(huì)死。”
“但點(diǎn)確認(rèn)呢?”一個(gè)男生顫聲問,“點(diǎn)了之后會(huì)發(fā)生什么?萬一進(jìn)去也是死呢?”
沒有人知道答案。
林逸坐回自已的位置。屏幕上,那兩個(gè)按鈕并排而立。他的代碼視覺還在運(yùn)轉(zhuǎn),他能看到按鈕背后的數(shù)據(jù)調(diào)用鏈——確認(rèn)登錄會(huì)觸發(fā)一個(gè)驗(yàn)證協(xié)議,向某個(gè)服務(wù)器發(fā)送身份信息;拒絕登錄則會(huì)激活剛才那種“腦功能終止”程序。
沒有第三條路。
倒計(jì)時(shí):02:10...02:09...
窗外,更多的人倒下了。不是系統(tǒng)懲罰,而是恐慌引發(fā)的心臟病、哮喘、踩踏。校園里已經(jīng)有人開始組織秩序,但效果有限。這個(gè)世界在十分鐘內(nèi)從常態(tài)墜入了瘋狂。
林逸閉上眼睛。
他想起了很多事。想起父母葬禮那天的雨,想起姑母把他接走時(shí)說的“以后要堅(jiān)強(qiáng)”,想起自已為什么選擇計(jì)算機(jī)專業(yè)——因?yàn)榇a是可控的,是邏輯的,是有明確因果關(guān)系的。
不像現(xiàn)實(shí),現(xiàn)實(shí)總是充滿意外和不可知。
但現(xiàn)在,代碼和現(xiàn)實(shí)重疊了。
倒計(jì)時(shí)最后一分鐘
廣播響起,這是最后通牒。
林逸睜開眼睛。他的手指懸在鍵盤上方,微微顫抖。
理智告訴他應(yīng)該等待,應(yīng)該觀察更多信息,應(yīng)該尋找漏洞——就像他調(diào)試程序時(shí)總是先找*ug一樣。
但時(shí)間不夠了。
倒計(jì)時(shí):00:45...00:44...
張濤已經(jīng)點(diǎn)了確認(rèn)。他癱在椅子上,臉色慘白,嘴里反復(fù)念叨:“我不想死我不想死我不想死……”
越來越多的人點(diǎn)了確認(rèn)。屏幕上彈出新的界面:創(chuàng)建角色,選擇職業(yè),新手引導(dǎo)……
他們進(jìn)入了那個(gè)所謂的“游戲”。
倒計(jì)時(shí):00:20...00:19...
林逸的代碼視覺捕捉到了一個(gè)新的數(shù)據(jù)流。在確認(rèn)登錄按鈕的底層,有一個(gè)異常的參數(shù)——一個(gè)不應(yīng)該出現(xiàn)在驗(yàn)證協(xié)議里的十六進(jìn)制字符串:0x7F454C46。
這個(gè)字符串他很熟悉。
那是ELF文件的魔數(shù)??蓤?zhí)行文件的頭部標(biāo)識(shí)。
但為什么一個(gè)登錄按鈕的驗(yàn)證協(xié)議里,會(huì)嵌入可執(zhí)行文件?
除非……點(diǎn)擊按鈕不只是登錄,而是下載并運(yùn)行某個(gè)程序到本地設(shè)備。
倒計(jì)時(shí):00:10...00:09...
林逸的大腦飛速運(yùn)轉(zhuǎn)。如果他能在程序運(yùn)行前注入一段代碼,如果能**那個(gè)可執(zhí)行文件的加載過程,如果能……
時(shí)間不夠了。
00:05...00:04...
他必須做決定。
00:03...00:02...
林逸的手指按下。
不是確認(rèn),也不是拒絕。
他在鍵盤上輸入了一行命令——一個(gè)強(qiáng)制注入的調(diào)試指令,利用了他剛才發(fā)現(xiàn)的協(xié)議漏洞。他不知道這行命令會(huì)引發(fā)什么后果,但總比被動(dòng)選擇要好。
00:01...00:00...
屏幕瞬間黑屏。
然后,一行新的文字浮現(xiàn),不是熒綠色,而是刺目的猩紅色:
異常訪問檢測(cè)
用戶:林逸(ID未分配)
行為:協(xié)議層注入嘗試
狀態(tài):分析中...
林逸的心跳漏了一拍。
他失敗了?還是……
文字再次變化:
分析完成
漏洞確認(rèn):協(xié)議棧溢出漏洞(0**y)
獎(jiǎng)勵(lì):特殊權(quán)限‘代碼視覺’強(qiáng)化
懲罰:新手難度提升300%
歡迎來到《末世代碼》,漏洞獵手
你的游戲,現(xiàn)在開始
屏幕徹底黑了下去。
林逸最后聽到的,是機(jī)房此起彼伏的尖叫聲——不是恐懼,而是痛苦。
然后,他的意識(shí)沉入了無邊的黑暗。