當前位置: 首頁>>技術問答>>正文


在Android模擬器上如何獲得root權限?

我需要在Android模擬器中獲得root權限,從而使用’iptables’和’busybox’功能。

嘗試安裝了z4root應用程序,

但需要很長時間,且沒有完成獲取root就卡住了。有人說如果我們把係統降級到RC30以下,就可以獲得root權限了。如果這是真的,那該怎麽做呢?我使用Linux和Windows兩種操作係統。

最佳解決辦法

答案其實可以比較簡單:)

$ > adb shell
generic_x86:/ $
generic_x86:/ $ exit
$ > adb root
restarting adbd as root
$ > adb shell
generic_x86:/ #

次佳解決辦法

當模擬器運行時,執行以下命令列表,我在Android 2.2上測試了這個avd的解決方案:

adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system  
adb push su /system/xbin/su  
adb shell chmod 06755 /system  
adb shell chmod 06755 /system/xbin/su

每次啟動模擬器時都需要運行這些命令。假定su二進製文件位於工作目錄。可以在這裏找到susuperuserhttp://forum.xda-developers.com/showthread.php?t=682828

第三種解決辦法

如何獲取Android模擬器的Root權限(在Android 7.1.1 /Nougat測試過)

要求:

說明

  1. 安裝SuperSu.apk

    • 首先安裝SuperSu應用程序,隻需拖放(如果運行最新的模擬器版本,或通過adb做sideload,即adb –e install supersu.apk)

    • 安裝完成後,運行時會顯示如下所示的屏幕,顯示“沒有安裝SU二進製文件..”。這個錯誤隻是確認設備還沒有 root 權限。

android-emulator,root


  1. 使模擬器的係統分區可寫

    • 需要給模擬器寫入係統文件的權限。

    • 輸入以下代碼來完成此操作:emulator.exe –avd {emulator_name} –writable-system

注意:先導航到安裝了Android SDK的工具文件夾,然後按Shift並右鍵單擊打開命令提示符。


  1. 導入su二進製文件到係統目錄

    • 解壓flashable.zip(包含不同體係結構的su二進製文件)

重要!隻能使用與avd體係結構(如x86,arm等)相匹配的su二進製文件,並記下您提取這些二進製文件的路徑。

  • 確保以root身份運行adb,並且需要remount。隻需輸入這些代碼

adb root

adb remount

然後push su二進製文件:

使用的代碼:adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su

注意:在控製台找出binxbin:> adb shell,> ls /system/xbin/su

如果失敗,請嘗試將這個目錄改為/system/xbin/su。另外運行Android 5.1及以下版本的模擬器,使用su而不是su.pie


  1. 更改su二進製文件的權限

    • 接下來對su二進製的權限做一些修改。必須通過adb在模擬器中做到這一點:

    adb –e shell
    su root
    cd /system/bin
    chmod 06755 su

重要!!記下su二進製路徑(比如,這裏是/system/bin)


  1. 在su binary上設置install指令並設置daemon

輸入代碼:

su --install

並設置守護進程:

su --daemon&

重要!!注意間距


  1. 將SELinux設置為Permissive(即關閉SE Linux)

    • 最後通過這個代碼關閉selinux:

setenforce 0


  1. 打開SuperSU應用程序,它可能會要求更新二進製文件,您可以使用Normal方法。

注意:如果您遇到bootloops,請不要更新二進製文件,隻需按照原樣使用即可。


到這裏差不多就可以了!

打開任何需要SU權限的應用程序,仔細檢查確實SuperSU會詢問您是否希望授予它權限。

android-emulator,root

要讓root持久更新su二進製文件(使用Normal方法),將system.img從臨時目錄(Users\AppData\Local\Temp\Android Emulator中複製,該文件通常是隨機命名的,例如1359g.tmp具有較大的大小),並替換默認的system.img

第四種辦法

對於使用5.1.1和6.0的AVD:

set adb=adb -s emulator-5558
set arch=x64
set pie=
adb start-server
%adb% root
%adb% remount
rem %adb% shell mount -o remount,rw /system
%adb% shell setenforce 0
%adb% install common/Superuser.apk
%adb% push %arch%/su%pie% /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push %arch%/su%pie% /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
rem %adb% shell mount -o remount,ro /system

exit /b

需要SuperSU的UPDATE.zip,解壓到任何文件夾。用上麵的內容創建bat文件。不要忘記指定必要的架構和設備:set adb=adb -s emulator-5558set arch=x64。如果運行的Android大於或等於5.0,請將set pie=更改為set pie=.pie。運行,獲得當前運行的臨時根目錄。

如果在重新安裝係統分區時出現錯誤,則需要從命令行啟動AVD。請參閱下麵的Android 7的第一步。

如果想讓它持久化 – 在SuperSU中更新二進製文件,並將臨時文件夾中的system.img文件保存為默認的system.img文件。

如何將生成的臨時根目錄轉換為永久的?

首先是SuperSu。它提供了一個二進製升級。以正常方式更新,不要Reboot。

其次 – 隻與模擬器相關。相同的AVD。底線是係統映像中的更改不會被保存。需要自己保持。

對於不同的模擬器已經有不同的說明。

對於AVD,可以嘗試找到一個臨時文件system.img,將其保存在某處並在啟動模擬器時使用。

在Windows中,它位於%LOCALAPPDATA%\Temp\AndroidEmulator中,並且有一個類似TMP4980.tmp的名稱。

將其複製到文件夾avd設備(%HOMEPATH%\.android\avd\%AVD_NAME%.avd\),並重命名為system.img


對於android 7,需要運行其他步驟:1.需要手動運行模擬器。轉到sdk文件夾sdk\tools\lib64\qt\lib。從這個文件夾模擬器運行選項-writable-system -selinux disabled,如下:

F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
  1. 需要從根目錄重新啟動adbd:adb -s emulator-5554 root

重新安裝係統:

adb -s emulator-5554 remount

每次運行模擬器隻能使用一次。而任何另一個remount可以破壞寫入模式。因此,不需要運行任何其他重新mount的命令,如mount -o remount,rw /system

另一個步驟保持不變 – 上傳二進製文件,運行二進製文件等等。

來自AVD Android 7 x86的圖片:

android-emulator,root


如果在執行su二進製文件時看到關於PIE的錯誤,那麽可能是上傳到仿真器二進製文件有誤。必須在歸檔文件中上傳名為su.pie的二進製文件,但在仿真器上必須命名為su,而不是su.pie

第五種辦法

最簡單的方法是為命令sh創建一個別名,例如

adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su

在Android模擬器3.0及更高版本測試過。

參考文獻

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3682.html,未經允許,請勿轉載。