イカ乱
- 3. 自己紹介
● 第4世代でいろいろ
– バトルファクトリーの解析
– くじ番号から裏IDを特定するツール
– バトルタワーの解析
– ものひろいの乱数調整
● 線形合同法についてのいくつかの記事
● ほか:某超次元サッカーRPGの解析
- 11. アセンブリコード
● ある程度踏み込んだ解析をしようとしたらアセ
ンブリコードを読むことが必要
– アセンブリコード=機械が実行できるように変換さ
れたプログラム
● DSではARMという命令セットが使われている
– iPhoneやAndroid端末などでも使われている組み込み
向けのもの
– なお、多くのPCで使われている命令セットはx86と
いう。ARMとはずいぶん性格が違う
- 13. アセンブリコード
void init_genrand(unsigned long s)
{
mt[0]= s;
for (mti=1; mti<N; mti++) {
:0203EEA4 E92D4008 stmdb sp!, {r3,lr}
:0203EEA8 E59F1060 ldr r1, [0203ef10] ; 021467b8
:0203EEAC E3A02001 mov r2, #1
:0203EEB0 E5913000 ldr r3, [r1, #0]
:0203EEB4 E5830000 str r0, [r3, #0]
:0203EEB8 E5910000 ldr r0, [r1, #0]
:0203EEBC E58029C0 str r2, [r0, #1c0]
:0203EEC0 E5910000 ldr r0, [r1, #0]
:0203EEC4 E590E9C0 ldr lr, [r0, #1c0]
:0203EEC8 E35E0E27 cmp lr, #270
:0203EECC A8BD8008 ldmiage sp!, {r3,pc}
:0203EED0 E59F003C ldr r0, [0203ef14] ; 6c078965
|0203EED4 E591C000 ldr r12, [r1, #0]
:0203EED8 E08C210E add r2, r12, lr, lsl #2
:0203EEDC E5122004 ldr r2, [r2, -#4]
:0203EEE0 E0222F22 eor r2, r2, r2, lsr #1e
:0203EEE4 E023E092 mla r3, r2, r0, lr
:0203EEE8 E78C310E str r3, [r12, lr, lsl #2]
:0203EEEC E5913000 ldr r3, [r1, #0]
:0203EEF0 E59329C0 ldr r2, [r3, #1c0]
:0203EEF4 E2822001 add r2, r2, #1
:0203EEF8 E58329C0 str r2, [r3, #1c0]
:0203EEFC E5912000 ldr r2, [r1, #0]
:0203EF00 E592E9C0 ldr lr, [r2, #1c0]
:0203EF04 E35E0E27 cmp lr, #270
*0203EF08 BAFFFFF1 blt 0203eed4
:0203EF0C E8BD8008 ldmia sp!, {r3,pc} ワオ!
mt[mti] =
(1812433253UL * (mt[mti-1] ^
(mt[mti-1] >> 30)) + mti);
}
}
- 18. NO$GBA Debugger
● デバッガのついたエミュ
レータ
● シェアウェアだったものが
2014年7月28日にフリー
ウェアとして公開
● あのktxadさんも使っている!
● ちょっと触ってみたが使い方が分からなかった…orz