攻撃は最大の防御なり

50代おやじの適当なブログです。

[Android] boot.imgを展開してみる

2011-11-17 11:35:01 | Android
さて、今回はAndroidのboot.imgを展開してみます。
俺はLinuxで作業していますが、WindowsでもCygwinを使うと同様のことが出来ます。

まずは、ここからunpack-bootimg.plを取得してきます。
boot.imgはClockworkModで取った物を使えば良いんですが
ついでに他の取得方法も書いておきますね。
busyboxがインストしてあることとbootバーティションのデバイス名を知っている事が条件です。
例えばHTC Sensationの場合はこんな感じ。
adbで

dd if=/dev/block/mmcblk0p20 of=/sdcard/boot.img

dd if=デバイス名 of=出力ファイル名

こんな感じですね。

この方法は単純なパーティションダンプなので、
ClockworkModで取得した物に比べてファイルサイズが大きくなります。
当然ですがhbootやsystemもこの方法でダンプできますし、
用途不明なパーティションの中身を調べるのにも使えます。

boot.imgとunpack-bootimg.plを同じディレクトリに置き、カレントディレクトリで以下の様に入力しますが
確かCygwinをディフォルトでインストしただけではcpioが入らなかった気がしますので
setup.exeを使ってパッケージを追加して下さいね。Utilsカテゴリーの中にあります。

./unpack-bootimg.pl boot.img


Cwdパッケージが無いと警告が出ますが気にしないで下さい。
中身が出ましたか?
recovery.imgも同様の方法で展開出来るので見比べてみると面白いですよ。

つづく…

最新の画像もっと見る

16 コメント

コメント日が  古い順  |   新しい順
Unknown (936)
2011-11-17 15:26:35
おおお!!
これはすごいです。
早速bootとrecovery(CMW)を試みました。
勉強になったのは二つともdefault.propがあるんですね!!
bootの方はファイラーでいつも見ていますが、
recoveryの方は初めてみました!!
しかも中の記述をみて今までの考えが確信に変わりました(笑)
wimaxのtcpサイズやMTUもあったこれを弄ったら面白そうですね。
CWMにbusyboxが同梱されているのも確認できました!!

続編お待ちしております。
返信する
Unknown (アレ)
2011-11-17 21:06:28
やっぱりこう言うのは言葉の説明よりは
実際自分でやってみて確認した方が納得出来ますよね。

EVOだとそこいら辺の情報がdefault.propに記載されているんですか?
プロパティ一覧はadbからgetpropで取得できるので、
変更した後に反映されているか調べるのに使ってください。
返信する
Unknown (936)
2011-11-17 23:30:43
getpropやってみました!!
これはRecovery時のdefault.prop内の項目も合わせて
表示されるのでしょうか?
なにやらたくさん出てきたものでして(笑)

ちなみにEVOのboot,Recovery.imgです。
http://hotfile.com/dl/135288217/9fef003/img.zip
boot.imgの方はadb関連のみですが、Recovery.imgの方はたくさん出てます。
返信する
Unknown (アレ)
2011-11-18 03:01:35
反映されるdefault.propはあくまで自分の物だけですが
システム上、別の箇所でも設定している所が多々あるのであれだけの数になります。

default.propは起動の先頭で読まれるためgetpropの表示順でも先頭のはずです。
返信する
Unknown (936)
2011-11-18 10:43:18
なるほど!了解しました^^

一点確認なのですが、私のRecoveryイメージなのですが、
recovery.img-ramdisk/sbinにsuがありません。
しかし、Recovery時はsuを実行できます。
http://i.imgur.com/21kE2.png
これはshがsuの役割を果たしているのでしょうか?
返信する
Unknown (936)
2011-11-18 16:46:17
すいません。
ごっちゃになっており勘違いしていました。
Recoveryでsuをやってもコマンドがないと言われます。
Recovery時はdefault.prop設定のお陰でroot権限で実行できるのでした…。
返信する
Unknown (アレ)
2011-11-18 18:47:55
そうです。
Recovery時にsuは必要無いので入っていないんです。

昨夜のdefault.propの件で思い出したんですが
Recovery内のdefault.propに追記されているのは
/system/build.propの内容です。

Recoveryはsystemを読み込まない構造なので
ここに記載されているんですね。
返信する
Unknown (936)
2011-11-18 19:17:37
確認取れました^^
ちゃんと解像度の設定もあり、正にってかんじですね!

いつも色々とありがとうございます^^
返信する
bootバーティションのデバイス名の調べ方 (936)
2011-11-20 19:16:11
他機種SMT-i9100(Galaxy Tabと同等品)なのですが、
bootバーティションのデバイス名を調べようと下記コマンドを試しましたが以下のメッセージで取得出来ませんでした。

adb shell cat /proc/mtd
/proc/mtd: No such file or directory

これ以外にmountを試みましたが取得できません。

adb shell mount
rootfs / rootfs rw,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
/dev/block/stl6 /mnt/.lfs j4fs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/stl9 /system rfs rw,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/mmcblk0p2 /data rfs rw,nosuid,nodev,noatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/stl10 /dbdata rfs rw,nosuid,nodev,noatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
tmpfs /app-cache tmpfs rw,relatime,size=12288k 0 0
/dev/block/stl11 /cache rfs rw,nosuid,nodev,noatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,noatime,nodiratime
/dev/block/vold/179:9 /mnt/sdcard/external_sd vfat rw,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/vold/179:9 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
tmpfs /mnt/sdcard/external_sd/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/block/dm-0 /mnt/asec/com.elsdoerfer.android.autostarts-1 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/dm-1 /mnt/asec/com.keramidas.TitaniumBackup-1 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/dm-2 /mnt/asec/jackpal.androidterm-1 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/dm-3 /mnt/asec/com.estrongs.android.pop-1 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/dm-4 /mnt/asec/com.clov4r.android.nil-1 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/dm-5 /mnt/asec/com.dropbox.android-1 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/dm-6 /mnt/asec/com.google.zxing.client.android-1 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,
/dev/block/dm-7 /mnt/asec/com.opera.browser-2 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,

他に調べるコマンドはあるのでしょうか?
返信する
Unknown (アレ)
2011-11-21 09:41:16
機種によりますが
cat /proc/emmc
で取得出来るものもあります。

後はddで/dev/block/mmcblk0pXを片っ端からダンプしていって
バイナリエディタで見た方が早いかも知れません。
返信する

コメントを投稿