なるほどえたきちのブログじゃねーの

チラ裏雑記帳

ポケモン過去作の解析とか乱数調整とかそこら辺。不定期更新。

LG用任意コード実行に関するアレコレ

LG前期ROMでの任意コード実行法が割れていないようなので簡潔に纏めます。
任意コード実行バグ自体の原理としてはEm,FRで行ったものと全く同じですので細かい解説は省きます。
アセンブリやメモリ構造を理解しており、Emでの任意コード実行環境が整っている方向けです。

Emの0x2B5CやFRの0x38C9のような都合の良いバグ技が存在しなかったので幾つか候補となる技を挙げています。
それぞれ参照されるメモリアドレスが異なっている為、使用する技に合わせて各自でプログラムを調整するようにお願いします。

バグ技持ちの個体調達はEmで行うことを推奨します。
GBA同士の交換ではバグ技持ちが扱えないのでGC(Co,XD)経由で送ってください。

使用できるバグ技



0x2348

威力:37
命中:37
PP:37
参照メモリアドレス:0x02030400
効果は『ねむる』と同一。
HPが満タンの場合は失敗する。
f:id:BZL:20190916053758p:plain


0x21BE

威力:153
命中:153
PP:17
参照メモリアドレス:0x020300C0
効果は自分に対し『あくび』を使用するというもの。
使用後は基本的にすぐに戦闘離脱するのでほぼノーデメリット?
この記事の最後に紹介している任意コード実行ではこのバグ技を使用しています。
f:id:BZL:20190916054042p:plain


0x0259

威力:---
命中:96
PP:1
参照メモリアドレス:0x02030400
効果は通常攻撃。
PPが非常に少ない。ごく稀に外れる。
f:id:BZL:20190916060123p:plain


0x0506

威力:64
命中:11
PP:45
参照メモリアドレス:0x02030085
効果は『つるぎのまい』と同一。
参照アドレスが4の倍数ではないので注意。
f:id:BZL:20190916060452p:plain


0x20F9

威力:153
命中:153
PP:153
参照メモリアドレス:0x02030087
効果は『テレポート』と同一。
任意コード実行と戦闘離脱を同時に行ってくれるが、参照アドレスが4の倍数ではないのでスクリプトが記述しづらい。
f:id:BZL:20190916054228p:plain



実行するコードの例


0x21BE用たんじょうのしまワープ
技成功後にテレポートを使用するとたんじょうのしまにワープします。
f:id:BZL:20190916091650p:plain


.thumb

/*元のコード*/
ldr r0, =0x03005048 /*動的RAM制御ポインタ*/
ldr r0, [r0]
ldr r1, =0x00003802 /*マップ指定*/
str r1, [r0, #0x1c]
pop {r4-r7, pc}
/**/
/*===========================*/
/**/
/*ボックス名埋め込み用*/
/*Box1*/
box1:
ldr r0, var2
ldr r0, [r0]
ldr r1, var1
b box3

/*Box3*/
box3:
str r1, [r0, #0x1C]
pop {r4-r6}
pop {r7, pc}

/*Box5*/
var1:
.word 0x00003802

/*Box7*/
var2:
.word 0x03005048

box7:
b box1

ボックス内編集内容


ジャンプスクリプト

13 07 16 03 02 (12/23 NN:てきにうい)
13 01 16 03 02 (12/23 TN:てあにうい)
13 D5 15 03 02 (12/24 NN:てaなうい)


任意コード実行スクリプト

03 35 16 03 02 80 00 08 (Box2:うゅにういィ く)
03 ED 15 03 02 80 00 08 (Box4: うyなういィ く)
03 A9 15 03 02 80 00 08 (Box6:う8なういィ く)


任意コード部

0D 48 00 68 07 49 04 E0 (box1:すぶ ネきべえl)
C1 61 70 BC 80 BD (box3:GチミBィC)
02 38 00 00 (box5:いぎ  )
51 51 48 50 00 03 E0 E7 (box7:アアぶっ うls)


ボックス5の名前を書き換えることでワープ先を変更できます。
以下はその例になります。
[い   ]:へそのいわ
[あえ  ]:サント・アンヌごう桟橋
[あぜ  ]:サファリゾーン
[あっ  ]:殿堂入り部屋
[うゃ  ]:8ばんななしま
[うゅ  ]:9ばんななしま