[討論] TAS的任意代碼執行(ACE)(上)

作者: Append (<( ̄︶ ̄)>)   2020-09-02 13:13:13
╭────────────╮
│ 前言 ── 什麼是 ACE? │
╰────────────╯
TAS 的全名是 "Tool-Assisted Speedrun/Superplay",
也就是「用輔助工具製作的通關/遊玩影片」,
他們可以透過不斷的存檔讀檔、監控記憶體、放慢速度錄製動作...等等輔助工具,
達成非人力可及的操作技巧,
進而完成「最快速度通關」或是「某些指定目標」。
大概在 2008 年左右,
網路上出現了不少「不務正業」的TAS,
他們看起來不太打算破關,
像是在 Pokemon 黑白版裡面努力的阻礙交通,
https://youtu.be/crb-qQ58EGo
然而這些「不務正業」大致上都還是在遊戲設計的範圍之內。
過了幾年之後這現象越發嚴重,
大約在 2013 年左右,
我發現 TAS 開始不務正業,
開始做一些「跟目前這個遊戲本身沒什麼關係」的事;
同時,這些TAS的標題上,大多都會寫上
"Arbitrary Code Execution" (ACE, 任意代碼執行)。
我大概能想像這個詞彙好像有些抽象,
不太容易馬上看懂這想幹嘛,
所以讓我們來看一個例子──也就是「ACE」這個技術真的紅起來的瞬間。
2014年的一月,
在全世界的遊戲快速通關社群一年一度的盛會 AGDQ2014 之中,
由 DwangoAC 帶領的團隊設計了一台機器人 "TASbot",
讓他們能夠在實機上現場表演TAS。
他們在當時玩了幾個遊戲,
其中最讓人印象深刻,
甚至我覺得震驚世界的,
是超任的 Super Mario World 瑪利歐世界。
https://youtu.be/Uep1H_NvZS0?t=31m48s
遊戲開始之後,可以看到瑪利歐騎上耀西,
沿路像雜耍一樣的玩弄一些路上的物件,
然而大約在影片的 33:28 處,
事情變得不太一樣,畫面開始出現一些不太對勁的東西 ...
幾秒鐘後,畫面上出現了兩個可以操作的小遊戲,
就在一台實機超任的瑪利歐世界裡面。
非常明顯,這兩個小遊戲絕對不是任天堂當初設計的部分。
沒錯,這就是他們自己寫的。
他們在實機超任的瑪利歐世界中,
利用一些遊戲的Bug,
在超任的記憶體裡面寫了這兩個小遊戲的程式碼,
然後執行他。
於是這時候可以回到我們這次的主題,「什麼是ACE?」
看過上面的例子,應該大致能夠想像,
他們在遊戲中「執行了一段由他們自己決定的程式碼」,
這就是所謂的「任意代碼執行」。
題外話,在節目裡面他們說,
他們原本想要寫一個紅白機瑪利歐一代,
然後再來跑他的 TAS,
但是實在是趕不上節目,
光是這兩個小遊戲就是表演前一天晚上才作好的。
於是,一年後,有了充裕的開發時間,
他們就在 AGDQ2015 現場端出來紅白機瑪利歐了。
https://youtu.be/HvCoNSq3GEM?t=5m48s
GDQ 後來幾年也都會有 TAS Block,
TASbot 團隊也經常端出稀奇古怪的東西,
非常精彩,極度強烈推薦喜歡TAS的人們都可以看看。
作者: srwcc (老馬)   2020-09-02 13:24:00
作者: jazon (Perhaps, Love)   2020-09-02 15:05:00
先推一個 這邊的概念是如果有在寫程式的版友才比較容易看懂
作者: napdh (..)   2020-09-02 15:20:00
好文推薦
作者: Jay915 (平靜的心…看世界)   2020-09-02 20:52:00
作者: darknote (黑暗筆記)   2020-09-02 22:07:00
紅白機時期記得有幾個遊戲有搞過
作者: superrockman (岩男)   2020-09-03 02:08:00
不會寫程式 有看沒有懂XD
作者: icf10076328 (八)   2020-09-03 09:58:00
太厲害了
作者: kkssffaa (阿發)   2020-09-05 08:45:00
這個太屌了,不管是精神還是技術,都值得敬佩
作者: bgworld (Solid)   2020-09-06 18:15:00
好酷,對遊戲很有愛
作者: AmosYang (泛用人型編碼器)   2020-09-09 21:17:00
作者: longlongint (華哥爾)   2020-10-23 13:16:00
利用漏洞修改記憶體內容,把二進位程式輸入到記憶體原理簡單實際上很難弄

Links booklink

Contact Us: admin [ a t ] ucptt.com