FF6 には所謂ドリル装備という有名な裏技*1 があって、その昔お世話になった人も多いと思いますが、これを応用すると任意のコードが実行できることがスラドに載っていて興味深かったのでメモ。
確かこの技は下手なものを下手な部位に装備して戦闘するとフリーズしたり、データが飛んだりするバグだったはずですが、これがコード実行によって引き起こされてしまうというのなら納得がいきます。今となってはその発生メカニズムににニヤニヤしてしまいますが、20 年前はそんなことも当然出来なかったわけなので、自分も歳をとったものです。
FF6に任意のコードを実行できる脆弱性が発見される | スラッシュドット・ジャパン IT
FF6には、本来キャラクターが装備できないアイテムを武器として装備できてしまうバグがあるのだが、この際に特定のアイテムを装備させて戦闘中に攻撃すると、メモリ内の$000Fおよび$0010部分に格納されているデータをアドレスとして参照し、対応するデータをコードとして実行してしまうという。$000Fは「戦闘開始からの経過時間をカウントするカウンターの2バイト目」で、$0010は戦闘中いくつかに変化する値が格納されているとのことだが、これだけでは任意のコードを実行できない。しかし、$000Fが0xC7、$0010が0xCEという値になっていた場合、「シャドウ」というキャラクターの名前データが格納されているメモリ領域のコードが実行されてしまうという。シャドウの名前はプレイヤーが自由に設定できるため、ここに実行したいコードを用意することで任意のコードを実行できる仕組みだ。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7562
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。