もう発売されて、20年以上経つゲーム「ファイナルファンタジーVI」ですが、
新しい脆弱性というか、バグ技が発見されたとのこと。
Powered By 画RSS
■FF6に任意のコードを実行できる脆弱性が発見される
スーパーファミコンの人気RPG、ファイナルファンタジー6(FF6)にて、
任意のコードを実行できる脆弱性が発見された
(ニコニコ動画で公開されているデモ動画)。 FF6には、本来キャラクターが装備できないアイテムを
武器として装備できてしまうバグがあるのだが、
この際に特定のアイテムを装備させて戦闘中に攻撃すると、
メモリ内の$000Fおよび$0010部分に格納されているデータを
アドレスとして参照し、対応するデータをコードとして
実行してしまうという。
$000Fは「戦闘開始からの経過時間をカウントするカウンターの2バイト目」で、
$0010は戦闘中いくつかに変化する値が格納されているとのことだが、
これだけでは任意のコードを実行できない。
しかし、$000Fが0xC7、$0010が0xCEという値になっていた場合、
「シャドウ」というキャラクターの名前データが格納されている
メモリ領域のコードが実行されてしまうという。
シャドウの名前はプレイヤーが自由に設定できるため、
ここに実行したいコードを用意することで任意のコードを実行できる仕組みだ。
ただし、名前は最大6文字までという制限があるので、
名前の最後に他のキャラの名前データのアドレスにジャンプする命令を入れることで
長いコードを実行させるというテクニックが必要だそうだ。
公開されているデモでは、戦闘終了後に適切にエンディングイベントに
飛ぶような処理を行っているとのことで、
10人のキャラクターを利用して任意コードを実行させているという。
これらはすべてゲーム内で普通に入力可能な文字を使っているため、
実機での再現が可能なようだ。
動画の最後では実行したコードが紹介されているが、
エンディングイベントを呼び出すにはただイベント管理用のデータを書き換えるだけではダメで、
いくつか回避処理を行う必要があるとのこと。
よくもまあこのような手法を編み出したものだと感動せざるを得ない。
何を言ってるのか良くわからないけど、
ニコニコ動画に投稿されている、
コチラの動画が、その脆弱性のデモ動画とのこと。
動画を見ても、なぜこうなるのかよくわからないが、
動画投稿者であるknbnitkr(おやつ) さんは、
こちらのサイトを参考にしたということだが、
やっぱり良く分からなかったw。
■TASVideos
http://tasvideos.org/forum/viewtopic.php?p=404974#404974こういうバグ技をどうやって見つけ出すんだろうと、
いつも不思議に思ってしまうw。
熱心に研究する人がいるんですね~。(゚θ゚ )
これ、VCでも出来てしまったりするんだろうか。
怖くて試さないけどねw
■スラッシュドットBRA★BRA FINAL FANTASY / Brass de Bravo
Powered By 画RSS