Speedrun

如何發現任意程式碼執行 (ACE) 漏洞(例如在 OoT 中)?

  • June 27, 2021

某些遊戲,例如 Pokémon Yellow 或 Ocarina of Time,具有允許您編寫自己的程式碼 (ACE) 的漏洞。這些漏洞是如何被發現的?我想學習如何找到這些漏洞,用於快速執行和其他地方。

根據我目前的理解,精通程式碼的速度跑者通讀遊戲的程式碼(甚至低至彙編語言),試圖找到可以跳轉到程式碼所在的記憶體的漏洞。

在相關的說明中,我想編制一個允許 ACE 的遊戲列表;網上好像沒有熱門榜單。即使 ACE 需要僅 TAS 的輸入,我也希望將其記錄下來。

根據我目前的理解,精通程式碼的速跑者會通讀遊戲程式碼(甚至低至彙編語言)

這基本上是唯一的方法。任意程式碼執行錯誤涉及注入機器程式碼,通常在字節級別,因此它們從根本上需要對遊戲和架構內部的深入了解。

要找到它們,遊戲崩潰或記憶體損壞的錯誤通常是一個很好的起點。通常這些是由隨機社區成員發現的,發佈到某個論壇,然後由具有利用該漏洞所需的專家知識的其他社區成員進行分析。在其他情況下,專家將花費大量時間來單步調試彙編程式碼,尋找漏洞。

緩衝區溢出和其他漏洞如何工作的細節遠遠超出了本網站的範圍。對於這類事情,我們還有一個完整的 Stackexchange:ReverseEngineering.SE (如果您詢問較舊的控制台,RetroComputing.SE是另一個很好的資源)

引用自:https://gaming.stackexchange.com/questions/387383