古詩詞大全網 - 個性簽名 - 如何修改framework下面的odex文件

如何修改framework下面的odex文件

android系統,壹般分為工程版本和用戶版本。而壹般用戶拿到的系統,都是用戶版,用戶版的直覺表面上的區別就是/system/framework和/system/app下的jar和apk文件都被odex化了。

對於/system/app下的odex,我們使用baksmali工具,就可以反編譯出smali文件,我們對些smali文件做修改之後,在目標機器上,使用dexopt-wrapper工具進行odex化之後,push到/system/app下就ok。但是,對於framework下面的文件,壹般不能如此修改,修改之後,push到/system/framework下面的時候,壹般都會把系統搞掛掉。如果framework下面文件不能修改,那麽玩android系統不是缺少很多樂趣?

[Toturial][Windows] How Editing The ODEX framework files?

這個方法需要改進壹下就可以適合各種機型了。

framework下面的odex進行反編譯之後,在打包,push到機器上運行不起來主要有兩點原因。

第壹點,就是framework下面的jar包,很多都是dalvik虛擬需要使用的BOOTCLASSPATH,android對此有特別的安全機制,所有我們進行odex化的時候,需要加入$BOOTCLASSPATH

第二點,就是簽名的問題,如果前面不對,那麽還是會啟動fail的,這個我們copy原有的odex文件頭就可以解決。

具體的方法,我們以下面壹個例子,修改android.policy.odex為例子。

我們提取目標機器中的android.policy.odex和android.policy.jar的,然後使用baksmali,修改smali之後,使用smali工具之後,打包成classes.dex,然後替換到android.policy.jar中。

下面開始我們的正文方法:

1,在/data/local/tmp中建立壹個zangcf_changed目錄和zangcf_original目錄

adb shell

cd /data/local/tmp

mkdir zangcf_changed

mkdir zangcf_original

exit

2,把原始文件和修改後的文件copy到目標機器

adb shell

adb push ./zangcf_changed/android.policy.jar /data/local/tmp/zangcf_changed/

adb push ./zangcf_original/android.policy.jar /data/local/tmp/zangcf_original/

adb push ./zangcf_original/android.policy.odex /data/local/tmp/zangcf_original/

exit

3, 準備執行環境

adb shell

su

mount -o rw,remount /system

chmod 777 /system/bin

chmod 777 /system/framework/

exit

exit

adb push ./dexopt-wrapper /system/bin

adb shell

su

chmod 777 /system/bin/dexopt-wrapper

exit

exit

4, 進行odex化

adb shell

su

cp /data/local/tmp/zangcf_changed/android.policy.jar /system/framework/android.policy.jar

dexopt-wrapper /system/framework/android.policy.jar /system/framework/new_android.policy.odex $BOOTCLASSPATH

cp -f /sdcard/amestris_original/android.policy.jar /system/framework

chmod 777 /system/framework/android.policy.odex

chmod 777 /system/framework/android.policy.jar

chmod 777 /system/framework/new_android.policy.odex

exit

5, copy原文件的頭。

adb shell

su

busybox dd if=/system/framework/android.policy.odex of=/system/framework/new_android.policy.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

cp /system/framework/new_android.policy.odex /system/framework/android.policy.odex

exit

exit

6, 刪除臨時文件和修改文件屬性

adb shell

su

chmod 644 /system/framework/android.policy.odex

chown root.root /system/framework/android.policy.odex

rm /system/framework/new_android.policy.odex

exit

exit

7,ok,然後重啟

adb reboot