【HTC J】framework/*.odexファイルの編集について

以前のdalvik-cacheからコピーする方法では上手く行かなかったので、
dexopt-wrapper でjarからodexファイルを作成する方法をメモしておきます。

dexopt-wrapperはXDAよりどうぞ http://forum.xda-developers.com/showpost.php?p=3864655&postcount=36
※ミラーしておきます⇒dexopt-wrapper.zip

dexopt-wrapperを事前に、スマートフォン上の実行可能な場所に置いて、
実行可能権限755をつけます。(例は、/data/local/tmp )

以下は、wimax.odexをbaksmali/smaliで編集して作成したclasses.dex を
くっつけた wimax.jar での dexopt-wrapperサンプルです。

・ファイル例
$ cd /data/local/tmp
$ ls -l
-rwxr-xr-x shell    shell        5512 2009-05-30 23:15 dexopt-wrapper
-rw-rw-rw- shell    shell      620271 2012-10-05 17:18 wimax.jar

・dexopt-wrapperの実行
$ ./dexopt-wrapper wimax.jar wimax.odex
--- BEGIN 'wimax.jar' (bootstrap=0) ---
--- waiting for verify+opt, pid=3787
--- would reduce privs here
--- END 'wimax.jar' (success) ---

→これでwimax.odex が作成されます。

・署名の追加 (オリジナルのwimax.odexからddでデータの上書きをします)
$ busybox dd if=/system/framework/wimax.odex-orig of=wimax.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
20+0 records in
20+0 records out
20 bytes (20B) copied, 0.008088 seconds, 2.4KB/s

・署名したwimax.odexで、wimax.odexを置き換える(元のwimax.odexはバックアップが必要)
$ su -c busybox cp wimax.odex /system/framework/wimax.odex

・結果
$ busybox ls -l /system/framework/wimax.o*
-rw-r--r--    1 0        0           633048 Oct  5 08:20 /system/framework/wimax.odex ★
-rw-r--r--    1 0        0           709528 Oct  5 07:56 /system/framework/wimax.odex-orig

■まとめ

/system/framework配下の.jarの本体(odex)ファイルは、
deodex化するのは無理なようなので、以下の手順で編集
する事になります。

1.xxx.jar と対になる dexファイルを baksmali.jar でsmali化
2.必要な編集後、smali.jarで classes.dex 化
3.xxx.jar に対して、7za a xxx.jar classes.dexで統合

~ 今回の記事はここから下の部分 ~

4.xxx.jar を端末上で、dexopt-wrapper を使ってodex 抽出。
5.オリジナルのodexファイルを使って、dd で 署名部分を上書き。
6.出来たodexファイルを、オリジナルに上書き。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です