1. 程式人生 > >如何在Root的手機上開啟ViewServer,使得HierachyViewer能夠連線

如何在Root的手機上開啟ViewServer,使得HierachyViewer能夠連線

================================================================ .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