memo:Xperiaのkernelのdisassemble
1. kernel.sinの取得
flashtoolでftfを作る過程でできます。kernel_ほにゃらら.sin
(ftfがすでにある場合は、7-Zipでばらせば中に入ってます)
root取得済みなら端末のbootパーティションをdumpしてもいいかな?
2. kernel.sinからのzImageの取り出し
DooMLoRD氏のunpack-kernelsin.plでzImage と ramdiskに分割。
3. zImageからImageへの変換
zImageは自己展開型で、解凍ルーチン+gz圧縮されたkernel imageになっている。
バイナリエディタ等で解凍ルーチン部分を削って、gunzipで展開する。
(gzipのmagicは、0x1f8bなのでそれを検索して、それ以前を削る)
4. disassemble
arm-linux-androideabi-objdump -D -b binary -m arm --adjust-vma=0xc0008000 piggy > kernel_asm.txt
こんな感じでおk。
かなり巨大になるので、シンボル情報から調べたい関数のアドレスがわかっていれば、
--start-address=開始アドレス --stop-address=終了アドレス
指定を付ければよい。
flashtoolでftfを作る過程でできます。kernel_ほにゃらら.sin
(ftfがすでにある場合は、7-Zipでばらせば中に入ってます)
root取得済みなら端末のbootパーティションをdumpしてもいいかな?
2. kernel.sinからのzImageの取り出し
DooMLoRD氏のunpack-kernelsin.plでzImage と ramdiskに分割。
3. zImageからImageへの変換
zImageは自己展開型で、解凍ルーチン+gz圧縮されたkernel imageになっている。
バイナリエディタ等で解凍ルーチン部分を削って、gunzipで展開する。
(gzipのmagicは、0x1f8bなのでそれを検索して、それ以前を削る)
4. disassemble
arm-linux-androideabi-objdump -D -b binary -m arm --adjust-vma=0xc0008000 piggy > kernel_asm.txt
こんな感じでおk。
かなり巨大になるので、シンボル情報から調べたい関数のアドレスがわかっていれば、
--start-address=開始アドレス --stop-address=終了アドレス
指定を付ければよい。