如何在Root的手機上開啟ViewServer,使得HierachyViewer能夠連線
阿新 • • 發佈:2019-01-25
================================================================
.method private isSystemSecure()Z
.registers 4
.prologue
.line 6276
const-string v0, "1"
const-string v1, "ro.secure"
const-string v2, "1"
invoke-static {v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_22
const-string v0, "0"
const-string v1, "ro.debuggable"
const-string v2, "0"
invoke-static {v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_22
const/4 v0, 0x1
:goto_21
const/4 v0, 0x0
return v0
:cond_22
const/4 v0, 0x0
goto :goto_21
.end method
=====================================================================================
7. 現在執行smali,重新編譯:
java -jar smali-1.4.2.jar -o classes.dex
這時候,應該在ANDROID_SDK_ROOT資料夾中出現了classes.dex檔案
8. 下載windows下的zip工具:
假設,我也把zip.exe放進了ANDROID_SDK_ROOT資料夾
9.確認當前cmd命令列執行目錄為ANDROID_SDK_ROOT,執行:
zip.exe services_hacked.jar ./classes.dex
這時候在ANDROID_SDK_ROOT資料夾下,出現了打包好的services_hacked.jar
10.進入adb shell,輸入su獲得ROOT許可權
11.重新掛載/system,並更改/system許可權
參考步驟(僅供參考,請確保使用相適應於自己手機的正確方法。請參考下面的"galfordq的blog"使用者的回覆):
a. 輸入mount,檢視哪個分割槽掛載了/system,例如我的是:
b. 輸入以下命令重新掛載/system,並更改/system許可權(請將“/dev/block/mmcblk0p25”替換成你的/system掛載分割槽):
mount -o rw,remount -t yaffs2 /dev/block/mmcblk0p25
chmod -R 777 /system 使得/system 可以被我們任意修改
這一步的作用,主要是為了第17步能夠將/system/framework裡的services.odex替換掉。這一步若不成功,在第17步的時候可能出現許可權不夠,無法替換的錯誤(Read-Only File System)
12.下載dexopt-wrapper檔案
我們也將dexopt-wrapper檔案放在ANDROID_SDK_ROOT資料夾中
13.將services_hacked.jar和dexopt-wrapper複製到手機的/data/local/tmp資料夾中
adb push ANDROID_SDK_ROOT/services_hacked.jar /data/local/tmp
adb push ANDROID_SDK_ROOT/dexopt-wrapper /data/local/tmp
14.進入adb shell,輸入su後,將dexopt-wrapper的許可權改為777
chmod 777 /data/local/tmp/dexopt-wrapper
15.在adb shell中cd到/data/local/tmp資料夾下,執行:
./dexopt-wrapper ./services_hacked.jar ./services_hacked.odex <本帖第三步存的地址,但是要刪除其中的":/system/framework/services.jar">
這一步就是將第七部生成dex檔案最終優化成了odex檔案。
===================================================================================================
例如我的命令是:./dexopt-wrapper ./services_hacked.jar ./services_hacked.odex /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/
framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/
framework/apache-xml.jar:/system/framework/HTCDev.jar:/system/framework/HTCExtension.jar:/system/
framework/filterfw.jar:/system/framework/com.htc.android.bluetooth.jar:/system/framework/wimax.jar:
/system/framework/usbnet.jar:/system/framework/com.orange.authentication.simcard.jar
===================================================================================================
這樣,便在/data/local/tmp資料夾中生成了我們自己的odex:services_hacked.odex
16.給我們自己生成的services_hacked.odex簽名:
busybox dd if=/system/framework/services.odex of=/data/local/tmp/services_hacked.odex bs=1 count=20 skip=52 seek=52 conv=notrunc