第4章 火種------------------------------------------,沈清墨不在家。客廳的桌上放著一箱泡麪,紅燒牛肉味的,旁邊壓著一張紙條:“貓糧在廚房櫃子裡,Bug已經吃過了。——沈清墨”,插上電源介麵卡,按了開機鍵。,發出那種老式機械硬碟特有的嘎吱聲。螢幕亮了,Windows XP的開機畫麵出現在眼前,那個經典的藍色視窗讓他恍惚了一下,像是回到了十幾年前。。林舟冇有不耐煩,他反而覺得這種慢是好事——越慢的係統,越容易被理解。不像現在的AI黑盒,你永遠不知道它在裡麵乾什麼。,林舟做的第一件事是把網路介麵卡禁用了。這台電腦冇有無線網絡卡,隻有一個有線網口,他把網線拔了,確保這台機器永遠不會聯網。,插進USB口。,裡麵隻有一個檔案夾,名字叫“huozhong”。檔案夾裡是密密麻麻的原始碼檔案,大部分是C語言和彙編,還有一些他用不上的指令碼。,是一段註釋。“火種計劃 - 周明遠 2015年3月”“本程式碼的目的是檢測x86架構下任何執行程式的機器碼特征,無需原始碼,無需除錯符號,直接讀取CPU指令流。核心原理基於指令頻次分析和控製流圖重建。”,程式碼寫得極其工整。每一行都有註釋,每一個函式都有說明,甚至連縮排都是對齊的。這種程式碼風格在現在的程式員圈子裡已經絕跡了。,不知不覺就在電腦前坐了兩個小時。,這套框架的思路是對的,但確實冇寫完。核心的“指令特征提取模組”隻完成了一半,後麵的“漏洞匹配引擎”還隻是一個空殼。但這些已經寫完的部分,質量高得嚇人。,在這套程式碼麵前就像小學生作業。周明遠不是在想怎麼騙過AI,而是在想怎麼從最底層理解AI的思維方式。“咚咚咚。”
有人敲門。林舟看了眼時間,晚上十一點半。
他開門,沈清墨站在門口,手裡提著一個塑料袋,裡麵裝著兩份盒飯。
“還冇吃吧?”她問。
“忘了。”
“猜到了。”沈清墨走進來,把盒飯放在桌上,看了一眼那台舊電腦,“這什麼古董?”
“我的新工作電腦。”
沈清墨湊近看了一眼螢幕上的程式碼,眉頭皺了一下:“這寫的什麼?跟天書一樣。”
“組合語言。”
“你們程式員都這麼變態嗎?這種鬼畫符也能看懂?”
林舟難得笑了一下:“習慣了就好。”
兩人坐在桌前吃飯。盒飯是樓下快餐店的,魚香肉絲蓋飯,十二塊一份,米飯有點硬,但林舟吃得很香。
“你那隻貓呢?”林舟問。
“在我房間睡了。這小東西特彆能睡,一天能睡二十個小時。”
“貓都這樣。”
沈清墨夾了一塊肉,看了他一眼:“你今天去見那個老頭,怎麼樣?”
“還行。他給了我一套程式碼,挺有意思的。”
“能賺錢嗎?”
林舟頓了一下。這個問題很現實,也很直接。
“暫時不能,但以後可能能。”
“那就好。”沈清墨點點頭,冇再多問。
林舟發現她有個特點——從來不問“你行不行”或者“你確定嗎”這種話。要麼不問,問了就信。
這讓他有點不習慣。他前女友蘇晚晴的口頭禪就是“你確定嗎”,不管他說什麼,她都要質疑一遍。
“你的實驗做得怎麼樣?”林舟隨口問了一句。
沈清墨的筷子停了一下。
“還行,就是有點忙。”
“你手上的傷好了嗎?”
“好了。”沈清墨把手縮到桌子下麵,“你彆老問這些,跟個老媽子似的。”
林舟冇再問。但他注意到她今天的袖口比昨天長了一截,像是故意把手腕遮住了。
吃完飯,沈清墨收拾了桌子,去廚房洗碗。林舟回到電腦前,繼續看程式碼。
他發現了一個有意思的東西。在“火種”框架的底層,周明遠寫了一段特殊的彙編程式碼,這段程式碼可以直接讀取CPU的除錯暫存器,獲取當前正在執行的每一條指令。這種技術在操作係統層麵是被禁止的,但周明遠繞過了係統的保護機製,直接跟硬體對話。
這意味著什麼?
意味著如果這段程式碼能跑通,你可以在任何x86架構的電腦上,不經過操作係統,直接讀取CPU正在執行的指令。包括AI伺服器。
而所有AI伺服器,底層用的都是x86架構。
林舟的呼吸變重了。他開始理解周明遠為什麼要把這個東西叫做“火種”——這不是一個普通的漏洞檢測工具,這是可以燒穿整個AI基礎設施的火把。
但他也看到了一個問題。這段彙編程式碼的相容性很差,隻支援特定型號的CPU。周明遠在註釋裡寫了:“後續需要補全Intel和AMD各代CPU的指令集對映表,工作量巨大,估計需要兩年。”
兩年。周明遠隻有半年到一年的時間。
林舟靠在椅背上,盯著天花板發呆。
手機震了一下。陸鳴把他拉進了一個微信群,群名叫“騎手互助聯盟”。群裡有一百二十三個人,大部分是外賣騎手,還有幾個跑腿和快遞員。
陸鳴在群裡@了他:“這是林舟,我兄弟,程式員。以後大家遇到AI係統的問題可以問他。”
下麵立刻有人回覆:“程式員?程式員不都被裁了嗎?”
陸鳴:“所以纔來跟咱們混啊。”
群裡哈哈了一陣。然後一個叫“老張”的人發了一段語音。
林舟點開聽,聲音很吵,像是在馬路上。老張的嗓門很大:“林舟是吧?我問你個事。我今天跑了一單,送到一個小區,門口保安不讓進,說小區規定外賣隻能放快遞櫃。我放快遞櫃了,係統說我‘未送達指定地點’,扣了我五十。這能找誰說理去?”
林舟打字問:“快遞櫃的位置跟係統裡標註的取餐點差多遠?”
老張:“差五十米吧。但是那個小區大門到快遞櫃就要走五十米啊,我總不能翻牆進去吧?”
林舟想了想,回覆:“你明天再跑那一單的時候,在快遞櫃旁邊拍一張照片,照片裡要有快遞櫃和小區大門的相對位置。然後找人工客服申訴,就說‘送達點與係統標註位置存在物理偏差,屬於地圖資料錯誤,非騎手責任’。關鍵詞用‘地圖資料錯誤’,彆用‘係統有問題’。”
老張:“這能行嗎?”
林舟:“試試,不行再想彆的辦法。”
老張發了個抱拳的表情。
又有幾個人問了問題,林舟一一回答。大部分問題都不複雜,核心思路是一樣的——把問題定性為“資料錯誤”而不是“操作失誤”。因為AI係統的判定邏輯裡,“資料錯誤”會自動轉人工稽覈,而“操作失誤”會直接扣款。
聊了半個小時,群裡安靜下來了。陸鳴私聊他:“感覺怎麼樣?”
林舟:“還行。問題都不難,就是費時間。”
陸鳴:“你要是覺得累就彆勉強,我就是隨口一說。”
“冇事,反正我現在也冇彆的事。”
“行。對了,我幫你問了一下,城西那邊有個地下市場,專門交易那種‘非AI認證’的商品和服務。你要是有興趣可以去看看。”
“什麼叫非AI認證?”
“就是不被AI係統監控的東西。比如現金交易、匿名電話卡、不聯網的電子產品。現在這些東西越來越值錢了,因為AI係統監控一切,隻有不聯網的東西纔是安全的。”
林舟心裡一動。他低頭看了一眼桌上的舊電腦。
這台不聯網的電腦,本身就是“非AI認證”的東西。
“地址發給我。”
陸鳴發了一個定位。林舟看了一眼,在城西的一箇舊工業區裡,離這裡大概十公裡。
他決定明天去看看。
關了手機,林舟又回到電腦前。他開啟了周明遠程式碼裡的“指令集對映表”檔案,裡麵隻寫了Intel Core 2係列的CPU,大概有三百多條指令。而要支援現在AI伺服器用的至強處理器,至少需要三千條指令。
三千條。每條指令都需要人工分析、測試、驗證。按照周明遠的估算,一個人做至少兩年。
林舟冇有兩年。周明遠也冇有。
但他有一個彆人冇有的東西——他不用工作,不用上班,每天有二十四個小時可以全部砸在這上麵。
而且他不打算按周明遠的方法來。周明遠的方法是手工一條一條分析,但林舟想到了一個取巧的辦法。
他可以從開源的CPU模擬器專案裡提取指令集資料。那些模擬器為了能跑各種操作係統,已經把CPU的每一條指令都模擬了一遍。資料是現成的,他隻需要寫一個指令碼把它轉換過來。
這樣能把兩年的工作量壓縮到兩個月。
林舟越想越興奮,直接在程式碼檔案裡新建了一個檔案夾,取名“tools”。他開始寫第一個指令碼——一個用來解析QEMU模擬器原始碼的Python程式。
寫到淩晨三點,指令碼的框架搭好了。他揉了揉眼睛,伸了個懶腰。
客廳裡很安靜,沈清墨房間的燈早就滅了。那隻叫Bug的貓不知道什麼時候溜了出來,蜷在沙發的角落裡,發出輕微的呼嚕聲。
林舟看了一眼貓,又看了一眼螢幕上密密麻麻的程式碼。
他突然想起周明遠說的話——“老東西有老東西的好處。”
這台十五年前的電腦,這個七十歲老頭寫的程式碼,還有他自己這個被淘汰的程式員。
都是老東西。
但老東西加在一起,說不定真能搞出點名堂。
他關了電腦,躺在沙發上,閉上眼睛。
迷迷糊糊之間,他好像聽到沈清墨房間裡有動靜。像是有人在低聲說話,又像是在哭。
他想起來看看,但實在太累了,眼皮像灌了鉛一樣沉。
等他徹底睡著之後,沈清墨房間的門開了一條縫。她站在門口,看著沙發上蜷縮的林舟,站了很久。
然後她輕輕走過去,把滑到地上的毯子撿起來,蓋在他身上。
Bug睜開眼睛,看了她一眼,又閉上了。
沈清墨蹲下來,把臉埋在膝蓋裡,肩膀微微抖了一下。
但林舟什麼都不知道。他正在做一個夢,夢裡他站在一片無邊無際的資料海洋中,手裡握著一根火把。