前回はGNUのobjdumpによる逆アセンブルを行ったが、リストを読んでいくとやはり解析不能な部分に遭遇する。
前回同様Twitterで愚痴っていたら、海外の方から、radare2でもm68kのバイナリを解析できるとの情報を教えてもらえました。
WSL2上でもradare2をインストールできます。
$ git clone https://github.com/radare/radare2.git
radare2のディレクトリに入り、以下のように入力するだけです。
$ ./sys/install.sh
必要なパッケージがあるときはその都度言ってきますので、それに従ってapt installしてください。
インストールが済んだら、radare2のパッケージをインストールするために以下のように入力します。
$ r2pm init
これでパッケージを使用できるようになりました。デフォルトでもcapstoneのm68kアセンブラ/逆アセンブラが入っていますが、詳細不明ながら別のパッケージもあるのでインストールしておきます。
$ r2pm -i m68k-net
これで、radare2を起動するときに以下のようにすれば、このプラグインが使われます(bios.binは適当なm68kのバイナリファイル)。
$ r2 -a m68k.net bios.bin
デフォルトのcapstoneでよければ、
$ r2 -a m68k bios.bin
です。
ちなみに、逆アセンブルはpdコマンドです。現在の番地(ここでは0xc2)から、10行?逆アセンブルしたければ、
[0x000000c2]>pd 10
とか入力します。
解析がうまくいかないときは、再度解析コマンドを入れるとうまくいく事があります。
[0x000000c2]>aaaa
こちらから、「ここはこうでは?」と言ったサゼッションができるといいんですが、できるのかできるとしたらどうやるのか不明です。
(蛇足)
Z80を解析したい場合は、
$ r2pm -i z80-nc
でプラグインをインストールして、r2起動時に、
$ r2 -a z80.nc ROM.bin
とかするとよいみたいです。