ポケットモンスターシリーズのバグ技についてまとめます。

「穴抜けの紐(ポケモン使用)」のコメント一覧へ

コメント詳細

いつもお世話になっております
デテロニーです

この度、当サイトの情報を参考にして、実機Emにて任意コード実行に成功しました
ただし、読み込むアドレスは少し変えてあり、ポケモンの性格値〜ではなく努力値〜を読み込むように工夫しました

使用したバグ技は0x0D1Dで、アドレス0x020304C0(ボックス12の28番目のブロック内データの始め)を参照します
命中・PP共に0なので少し厄介です

ブロック内データの始めがEブロックからになるよう、用意するポケモンの性格値はPID%0x18=0xC〜11とし、ブロック内データはメモリ上、性格値及び表裏IDとXORされて暗号化されているので、これを解錠化する為に性格値(PID)=ID値(SID-TID)となるパッチールをRS孵化乱数調整で入手しました
具体的には、
・ID:表50909裏11843(0x0x2E43C6DD)
・性格値:0x2E43C6DD
・PID%0x18=0xD(EGMA)
という個体を私は使用しました

このパッチールをコピーし、H努力値から美しさまでの8バイトを使用して、当サイトのコードを参考に、
・0x020304C0:03 11 05 03 02 FF 00 08
・0x02030510:38 20 00 02 24 E0
・0x02030560:1A 30 27 49 24 E0
・0x020305B0:08 60 F0 BD
・0x02030600:28 57 06 02
(最果ての孤島行き)
というコードを組みました
このパッチール5匹をボックス12/28〜13/2に並べ、任意コード実行を試みた所、無事成功が確認出来ました

この方法であれば、たった1度の簡単なID調整とたった1匹のパッチールのRS孵化乱数調整を行うだけで個体調達が完了するので、準備のハードルが低いことが利点ですね
また、努力値でコードを組むので調整が容易で、別のワープ先に変更する調整を簡単に行えるのもポイントです


お陰様で解析環境もアセンブラの知識も全くない私でも任意コード実行が出来ました
ありがとうございます

研究が進めばFRLGでも、果ては第4世代でも応用可能になるかもしれませんね

17
Posted by デテロニー 2019年06月10日(月) 13:49:23

管理人/副管理人のみ編集できます