攻撃は最大の防御なり

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

[Android] 変更したboot.imgを使ってみる

2011-11-30 09:43:18 | Android
boot.imgの中身をざっと見てきましたが、今回は展開したものからboot.imgを再作成したいと思います。

そのまま固めるのも面白くないのでunsecureなboot.imgを作りましょう。
boot.img-ramdiskの中のdefault.propを以下の様に修正します。

ro.secure=0
ro.allow.mock.location=1
ro.debuggable=1
persist.service.adb.enable=1

そうしたら、ここからrepack-bootimg.plを取得してきます。
そしてこれの19行目

system ("mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel $ARGV[0] --ramdisk ramdisk-repack.cpio.gz -o $ARGV[2]");

を自分の端末に合わせ書き換えます

system ("mkbootimg --cmdline 'boot_img_hdr.exeで取得したcmdlineの内容' --base boot_img_hdr.exeで取得したtags_addrの内容 --kernel $ARGV[0] --ramdisk ramdisk-repack.cpio.gz -o $ARGV[2]");

俺の場合はこうなりました。

system ("mkbootimg --cmdline 'console=ttyHSL0 androidboot.hardware=pyramid no_console_suspend=1' --base 0x48000100 --kernel $ARGV[0] --ramdisk ramdisk-repack.cpio.gz -o $ARGV[2]");

それと、 ここからmkbootimgを取ってきます。パスワードは「android」
これは repack-bootimg.plと同じディレクトリに置いて下さい。

使い方は
./repack-bootimg.pl [カーネルのファイル名] [ramdiskのディレクトリ名] [出力するboot.img名]

固まりましたか?
ちなみにカーネルをビルドした時にもこうやって固めます。

色々と時間が無い

2011-11-29 09:59:36 | 戯言
本格的にDTMのターンに移行したので、今の曲が仕上がるまで更新が滞ります。
元々、飽きっぽいのに加え1か0の人間なので、その時点で興味がある事以外は全くやらなくなります。
そもそも1日の自由時間が短すぎ。

Androidの記事も書けているんですが、ツールのアップロードが出来ない。
昔から思っている事でWebkitでローカルファイルを選択する時の振る舞いがおかしい。
ギャラリーで画像を選択した場合は正常なのでインテントされた側のアプリと整合性が合っていないのだと思いますが
いろんなファイラを試しても、どうもダメだね。
これは自分でアプリを作るしかないと思っている。

ダークソウルの七周目はグウィン王を倒すだけです。
八周目は生身縛りになるのに加え、この時点のセーブデータをオンラインストレージに書き出して
PS3二号機側でキャプチャするかもしれない。

調子悪し

2011-11-28 09:29:17 | 戯言
昨日は久しぶりにDTMやりながら酒を飲んでいたら
少々、二日酔い気味です。

後はPCのHDDが一台飛んでいるのに気付いた。
前回故障したときに一緒に飛んだんでしょうか?
今まで気付かない程そこのドライブは使わないって事ですが
お気に入りのサンプラーのデータが大量に失われました。
又、集めないといけない。


自動車教習所

2011-11-25 09:49:32 | 戯言
娘も専門学校に合格し、後の高校生活は遊んで暮らすだけの状態になりました。
そんな娘に自動車教習所の入校案内が届いていました。
今はこんなのが届くんですね。めざとい!
免許は自分で金を貯めてとると言っていますが…

妻、娘→浪費家で金が全く貯まらない
俺、息子→金を貯めるだけ貯めて豪勢に使う

なのでまず無理でしょうw

この案内に食い付いたのは息子の方で、じっくりと読んでいました。
遅生まれだから後二年で取りに行けるもんね。息子は自分で金を貯めて行くでしょう。
セダンしか乗る気がないとか言っているから、マーク2にでも乗るのかな?

[ダークソウル] 七周目の公王、凄くダルいです…

2011-11-24 10:11:02 | ダークソウル
今は七周目の公王と戦っている所ですが、何ともダルいです。
SLは何だかんだで140まで上げました。
状況としては

突き攻撃をまともに喰らう→即死
掴み攻撃を避けそこなう→即死
爆発する魔法攻撃を盾受けしそこなう→即死

武器も色々変えて試しています。
例えばデーモンの斧+15に太陽剣と大力かけるとか。
これだと両手弱攻撃で1000を越えるので強いんですけどねぇ…
でも、やっぱり慣れた炎サイズ+10がいいみたい。
順調な時は次の公王出現の前までに倒せますから。
三人目の公王までは行けたので絶対に無理という状況では無いですが結構時間かかりそう。
何よりやっていて面白くないw

このままだと負の連鎖にはまるので、気晴らしに別キャラも進める事にしました。
今はSL13でアノールです。
特に考えもなく突き進んで来たので、亡者兵士装備にハルバ+10と雷スピア+2。
火力が無いので手数は多くなりますが敵からのダメージが圧倒的に少ないので七周目より全然楽。

【デモンズソウル】レベル1縛り動画、再UP

2011-11-23 15:48:26 | デモンズソウル
何故かyoutubeに長時間の動画が上げられるようになったので
以前zoomeで公開していたデモンズソウル関連の動画を再UPしました。

【デモンズソウル】レベル1縛り2周目 城1
【デモンズソウル】レベル1縛り2周目 坑道1
【デモンズソウル】レベル1縛り2周目 坑道2,3
【デモンズソウル】レベル1縛り2周目 塔1
【デモンズソウル】レベル1縛り2周目 塔2
【デモンズソウル】レベル1縛り2周目 塔3
【デモンズソウル】レベル1縛り2周目 嵐1
【デモンズソウル】レベル1縛り2周目 嵐2
【デモンズソウル】レベル1縛り2周目 嵐3
【デモンズソウル】レベル1縛り2周目 谷1
【デモンズソウル】レベル1縛り2周目 谷2
【デモンズソウル】レベル1縛り2周目 谷3
【デモンズソウル】レベル1縛り2周目 城2
【デモンズソウル】レベル1縛り2周目 城3
【デモンズソウル】レベル1縛り2周目 城4
【デモンズソウル】レベル1縛り4周目 城1
【デモンズソウル】SL1裸素手縛り 城1-前編


[Android] カーネルのconfig

2011-11-22 10:00:14 | Android
boot.imgを展開して見てきましたがカーネルの方にも着目してみたいと思います。

まずはここからextract-ikconfigをダウンロードして来て下さい。
textで開いてしまうと思うのでリンク先を保存で。
このextract-ikconfigはLinuxカーネルソースのscriptsディレクトリに入っている物ですが
たまに変更がかかるのでなるべく新しいものを使った方がいいですね。
使い方は

./extract-ikconfig boot.img-kernel.gz > config


configってファイルが出来るので中身を見て下さい。
Androidのカーネルをビルドする時には多くの機能の中から
何を取り入れるかを選択していくのですが
これはこのカーネルがどの機能を使えるようにしてあるかの一覧です。

このconfigがあってソースがあれば全く同じ物がビルド出来る事になるわけです。
(HTCのカーネルソースはここにありますねぇ)
そして例えばCONFIG_NFS_FSをyにしてやってビルドしたりするとAndroid端末から
ネットワークドライブのマウントが可能になったり、カスタムカーネル作りに足を突っ込む事になりますw

extract-ikconfigの良い所は自分が持っていない端末であってもboot.imgが入手できれば
configの内容を見られる事です。
ちなみに起動中の端末だとadbから

zcat /proc/config.gz


としても取得できます。

[ダークソウル] 七周目に入ったけど…

2011-11-21 09:41:56 | ダークソウル
ダークソウルも七周目に入ったんですが
どうもオーンスタイン&スモウで苦戦しています。
敵が硬くなっただけなので、今までと同じ作業を長く続ければ良いだけなんですが集中力が切れてダメですね。
デモンズの時からそうですが、「全然出来ねぇー」と思ってやっていると負の連鎖が始まるようで本当に出来ない。
でも、今日やったら一回でサクッと出来たりします。大体そんなもんです。

ここではずっとグレートクラブを使っていたんですが、古竜の大剣に変えました。
片手強攻撃を当てると怯んでくれるので、反撃を喰らわなくていい。
銀騎士の反応を見ていると判りますが、特大剣は怯むのに大斧だと怯まない。
両方とも標準属性なのにどうして違うんだろうか?

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

2011-11-18 09:25:04 | Android
昨日の続きです。

boot.imgを展開するとこんなのが出て来ました。

boot.img-kernel.gz
boot.img-ramdisk
boot.img-ramdisk.cpio.gz

boot.imgの中にはboot.img-kernel.gzとboot.img-ramdisk.cpio.gzが入っていますが
昨日のunpack-bootimg.plがboot.img-ramdisk.cpio.gzを更に展開してくれた物がboot.img-ramdiskです。

このboot.img-kernel.gzがカーネルで
boot.img-ramdisk.cpio.gzは起動時にルートディレクトリに展開されるリソースです。
勘が良い人はboot.img-ramdiskの中身を弄ってやって、boot.imgに戻せば面白い事が出来るんじゃね?
と気付くと思いますが、それは又後の方で出て来ます。

昨日の記事の様にrecovery.imgを展開してみた人は中身が似通っている事に気付くはずです。
boot.imgはsystem.imgと組み合わせて起動する仕組みであるのに対し
recovery.imgはそれ単体で動作する仕組みになっています。

先に進む前にboot.imgを展開した時点で一部失われてしまった情報があります。
ちょっと退屈な話ですが、これを理解すればどんな機種のboot.imgでも触る事が出来る様になります。



これはHTC Sensationのboot.imgをバイナリエディタで開いてみた所ですが
(お勧めのバイナリエディタはStirlingです。ダウンロードはここから)
何やら意味有りげな文字列が並んでると思いませんか?
Andoroidをビルドする時にはmkbootimgと言うプログラムでboot.imgが作成されるのですが
こいつが「ANDROID!」の文字列から始まるboot headerを付与します
ここにboot headerが定義されたヘッダーがあります。コメントを読めば大体構成が理解できるのではないかと思います。

バイナリを読むのも面倒なので今回はboot headerの内容を表示するプログラムを書きました。
ここから取って下さい。パスワードは「android」
但し、cygwinが入っていないと動きません。
使い方は

./boot_img_hdr.exe boot.img

kernel_size : 3384784
kernel_addr : 0x48008000
ramdisk_size : 356028
ramdisk_addr : 0x49000000
second_size : 0
second_addr : 0x48f00000
tags_addr : 0x48000100
page_size : 2048
unused : 0x22c9b4
name :
cmdline : console=ttyHSL0 androidboot.hardware=pyramid no_console_suspend=1

上記はHTC Sensationの結果ですが、ここで重要なのは「tags_addr」と「cmdline」です。
tags_addrはカーネルのphysical addrに当たる物でここのアドレスから起動が掛かります。
当然ですがここが間違っていると起動しません。
cmdlineは語意そのものですが、端末上だとadbで取得できる

cat /proc/cmdline

の一部です。
catの結果が長いのはbootloaderからのコマンドとboot.imgのコマンドが合わさったものになっているからです。

この二つがboot.imgを再作成する場合に必要となります。

[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も同様の方法で展開出来るので見比べてみると面白いですよ。

つづく…