把記憶體畫在螢幕上:Switch 2 的程式碼,靠 HDMI 一格一格搬出主機
安全研究員利用 Switch 2 遊戲的使用者態漏洞,把執行中的程式碼換算成畫面像素、經 HDMI 擷取送到電腦還原,本文解釋這條影像通道的原理、使用者態漏洞的能與不能,以及距離完整破解還有多遠。
沒有檔案出口的封閉主機,研究者讓記憶體長成畫面上的色塊,從 HDMI 慢慢送進電腦。
一臺 Switch 2、一款遊戲、一片反覆閃動的色塊畫面,加一張 HDMI 擷取卡。9 月 17 日,安全研究員 gezine_dev 在 X 平臺宣布:這套組合花了一個多小時,把該款遊戲執行中的程式碼,完整搬進了他的電腦。
畫面上的色塊看似雜訊,實際上是記憶體裡的資料,正以像素的形式離開主機。
一句話說完這件事
研究者利用某款 Switch 2 遊戲自身的使用者態漏洞,在遊戲程序內部讀取本來不可能匯出的記憶體內容;由於主機不提供除錯介面,也沒有檔案系統的對外出口,他把每一批記憶體位元組換算成螢幕上的顏色與圖案,讓 HDMI 把畫面送出去,電腦端再按事先約定的規則把像素還原成位元組。多輪顯示、擷取、拼接與校驗之後,一份可供逆向分析的二進位檔就成型了。
值得留意的是他搬的東西。主機遊戲的安裝檔通常經過加密,真正便於分析的,是程式載入進記憶體、解密完成後的樣貌。這也是為什麼「執行期傾印」在逆向研究圈向來是搶手材料,拿到它,後續找漏洞、理解保護機制才有東西可以讀。
為什麼得走螢幕這條路
做逆向分析的第一步,是拿到目標程式的二進位碼。在個人電腦上這不構成問題:執行檔就放在磁碟上,除錯工具隨時可開。Switch 2 這類封閉主機完全是另一回事,系統把遊戲關在沙箱裡,不給對外的檔案匯出通道,也沒有替研究者留除錯介面。漏洞讓 gezine_dev 能在程序裡讀記憶體,讀出來的東西卻出不了門。
HDMI 剛好是一條主機在設計上就要對外輸出的路:只出不進、持續發送、不受沙箱管轄。任天堂把它當影音端子用,研究者把它當傳輸線用。這裡的巧勁在於,被鎖死的是資料介面,畫面本身從來沒被當成資料看待。而且這條路便宜得可以,擷取卡是現成商品,一條線接上就能開工。
一個像素裝得下三個位元組
換算的原理並不神祕。電腦裡所有資料都是 0 與 1,每八個位元構成一個位元組,能表示 0 到 255 共 256 種數值。螢幕描述顏色用的也是同一套數學:紅、綠、藍三個通道各用一個位元組標示強度,組合出一個像素的顏色。換句話說,記憶體裡每三個位元組可以塞進一個像素;一面 1080p 的畫面有兩百多萬個像素,理論上單張畫面就能承載數百萬位元組的資料。
理論吞吐量這麼大,實際卻花了一個多小時,瓶頸在可靠度。HDMI 送的是給人看的畫面,中間經過擷取卡的取樣與編碼,顏色可能被壓縮或量化而失真;影格之間還得對齊順序,才知道哪一段資料接在哪裡。想撐過這些損耗,編碼就得保守:每個像素少帶一點資料,加上校驗與重送機制,寧慢勿錯。對逆向分析來說,錯一個位元組,整份二進位檔就可能對不起來。
整個過程可以想成抄書。你人在一間不準帶紙筆出場的圖書館裡,把書頁內容換算成色卡,一頁一頁舉到窗外;窗外的人逐頁抄寫,核對無誤後再裝訂成冊。HDMI 是那扇窗,擷取卡是窗外抄寫的手。
使用者態漏洞:進得了房間,出不了大樓
依公開資料,gezine_dev 在 PlayStation 5 破解圈以挖掘主機漏洞聞名,這回把戰場換到 Switch 2。今年 7 月,他曾公開一個同時適用於 Switch 一代與二代的漏洞利用:不依賴瀏覽器漏洞、離線即可觸發,底層用的是 ARM64 環境下的 ROP 技術。當時的驗證方式很樸素,就是讓主機跳出錯誤訊息,證明自訂程式碼確實在目標程序裡跑起來了。
ROP(Return-Oriented Programming,返址導向程式設計)的思路是「不帶新程式碼進場」。系統禁止你載入自己的程式,就把主記憶體裡既有的小片段指令串接起來,每段做一件小事,串出一套想完成的邏輯,像用一疊現成的詞卡拼出一封完整的信。
但這類漏洞的天花板也很清楚。把作業系統想成一棟大樓:核心掌握門禁與監控,遊戲只是租戶,只能待在自己的房間。使用者態漏洞讓研究者在那個房間裡跑自訂程式、讀這個程序看得到的記憶體、改它的行為;房門外的世界依然碰不到,跨程序隔離與核心權限都還在。所以這項成果距離完整越獄還很遠,目前既不能跑自製系統,也輪不到盜版遊戲登場。它的價值像地基:在主機破解的常見路徑上,先站穩使用者態,才有機會找下一個往核心層去的跳板。
影像通道的老前輩
用「看起來在播畫面」的通道送資料,在資安研究裡並不新鮮。針對實體隔離網路的研究早已多次示範,透過螢幕亮度變化、硬體指示燈閃爍、風扇轉速等方式,能把少量資料送出封閉環境。Switch 2 這次的處境方向相反:氣隙研究是防守方以為沒有通道,主機逆向是廠商沒把影像輸出當成資料出口。兩者面對的命題一樣:資料能走的路,通常比鎖門的人想像的多。
一般使用者遇到的版本沒這麼戲劇化,但道理相通:封閉生態裡的資料,出口由平臺決定。最近的例子是Fitbit 帳號收攤後,沒搬家的健康資料將被刪除,平臺收掉舊登入選項,使用者只剩照新規則搬遷一途。研究者靠漏洞自開一扇窗,普通使用者多半只能等官方開門。
對玩家目前沒有影響,但值得盯幾個訊號
短時間內,這則新聞對一般玩家沒有實際影響:不能跑盜版、不能裝自製軟體,線上服務照常,gezine_dev 自己也把範圍講清楚,這是使用者態層級的成果。真正的觀察點在後面:任天堂接下來的韌體與遊戲更新,會不會低調修掉這類漏洞;研究者是否釋出更多技術細節,讓其他人接手;有沒有人踩著這塊地基,往核心層再推一階。主機攻防向來以年為單位,單一突破要放進時間軸裡看。
同一時間,Switch 2 的硬體生意正往另一個方向走。港版、美版、歐版接連漲價,美國來到 499.99 美元,香港調至 3,700 港幣,記憶體成本被點為原因之一;無底座、固定手柄的 Switch 2 Lite 也已曝光。裝機量越大,破解研究的誘因就越強,這條攻防線只會更熱鬧。
之後再看到「某主機被破解」的消息,可以先問三個問題:漏洞在哪一層、能碰到什麼、別人能不能重現。三個答案合起來,通常比「破解」兩個字更能說明事情有多大。