[讨论] 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