Bagaimana cara mendapatkan akses root pada emulator Android?

146

Saya memiliki semua versi Android SDK (dari 1.5 hingga 2.3.3), dan saya mencoba banyak metode untuk mendapatkan root di emulator Android. Saya tidak menggunakan perangkat Android dan menguji semuanya pada emulator (AVD).

Saya perlu mendapatkan akses root di salah satu emulator Android untuk menggunakan fungsionalitas 'iptables' dan 'busybox'. Dan untuk menggunakan iptables saya harus memiliki akses root. Perintah 'su' minimal harus dijalankan di terminal emulator.

Saya juga menginstal z4rootaplikasi,

Tapi itu butuh waktu sangat lama dan tidak selesai rooting, dan macet. beberapa mengatakan bahwa jika kita menurunkan sistem ke bawah RC30, dengan cara ini kita bisa mendapatkan akses root. jika ini benar, lalu bagaimana melakukan ini? Saya menggunakan Linux dan OS Windows.

Tolong seseorang beri tahu saya metode apa pun untuk root emulator saya.

Preetam
sumber
Saya pikir Anda dapat menggunakan "Root.apk" yang disimpan di filecrop (VISIONary dalam sistem android) untuk me-root emulator karena, pada setiap reboot, itu root sistem. Z4root tidak bisa berfungsi karena perlu reboot untuk membuat akses root berfungsi. Maaf untuk bahasa Inggris yang buruk, saya orang Prancis.
JeremLeOuf
Di mana saya bisa mendapatkan ini? Apakah ada manual untuk ini?
pengembang android
6
Harap perhatikan bahwa emulator android sudah "di-root". Anda tidak perlu melakukan apa pun untuk mendapatkan shell adb root, karena sudah berjalan sebagai root secara default. Yang dibahas di sini adalah memasang "su" yang diretas atau shim serupa untuk memungkinkan kode aplikasi meluncurkan program pembantu yang dijalankan sebagai root.
Chris Stratton
2
Gunakan Genymotion genymotion.com Ini sangat cepat dan memiliki root secara default.
klimat
1
Anda menginstal gambar yang salah. lihat di sini -> stackoverflow.com/questions/43923996/…
wwwwwwwwwwww

Jawaban:

136

Semua jawaban ini sangat rumit :)

$ > adb shell
generic_x86:/ $
generic_x86:/ $ exit
$ > adb root
restarting adbd as root
$ > adb shell
generic_x86:/ #
JRaymond
sumber
52
Menjalankan adb roothasil dalam "adbd tidak dapat berjalan sebagai root di build produksi". Apakah Anda menggunakan emulator tertentu? Harap berikan detail lebih lanjut.
orodbhen
3
Anda tidak dapat menggunakan root ini untuk aplikasi apa pun.
Enyby
5
Jika ada orang yang mencoba agar ini berfungsi pada gambar sistem Google Play yang baru, adbd diatur ke aman di ramdisk.img. Saya dapat mengatasinya dengan menggunakan ramdisk.img dari gambar Google APIs. Saya menguji pada gambar 7.0 dan 8.0.
tstaylor7
47
Jika adb rootmemberikan kesalahan adbd cannot run as root in production builds, lihat stackoverflow.com/a/45668555/1682419 - Anda memerlukan "Gambar Sistem Google API" daripada "Gambar Sistem Google Play".
Jerry101
10
@JRaymond Saya mengetikkan adb root tetapi tidak ada yang dicetak setelah itu
75

Bagaimana cara root emulator Android (diuji pada Android 7.1.1 / Nougat)

Persyaratan :

Instruksi

  1. Instal SuperSu.apk

    • Instal aplikasi SuperSu terlebih dahulu, cukup drag and drop (jika menjalankan versi emulator terbaru atau sideload melalui adb yaitu adb -e install supersu.apk)

    • Setelah menginstalnya, ketika Anda menjalankannya akan muncul layar seperti ditunjukkan di bawah ini yang menunjukkan "Tidak ada biner SU yang diinstal ..". Kesalahan ini hanya mengkonfirmasi perangkat belum di-root.

masukkan deskripsi gambar di sini


  1. Buat partisi sistem emulator dapat ditulis

    • Seperti yang disarankan, kita perlu memberi emulator izin untuk menulis file sistem.

    • Ketikkan kode berikut untuk melakukannya: emulator -avd {emulator_name} -writable-system

Jika Anda memiliki lebih dari satu AVD, Anda bisa mendapatkan daftar avds dengan menggunakan perintah: emulator -list-avds

Catatan: Navigasikan ke folder alat di mana Android SDK diinstal dan buka command prompt di sana dengan menekan shift dan mengklik kanan.


  1. Mendorong su biner di direktori sistem

    • Ekstrak the flashable.zip Recovery (berisi binari-binari dari berbagai arsitektur)

Penting! Hanya gunakan su binary yang cocok dengan arsitektur avd Anda, mis. X86, arm dll., Dan catat path tempat Anda mengekstrak binari ini.

  • Pastikan Anda menjalankan adb sebagai root dan juga Anda harus melakukan remount. Cukup masukkan kode ini

adb root

adb remount

Sekarang saatnya untuk mendorong biner su:

Ini adalah kode yang berhasil saya gunakan :adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su

(tidak pernah ingat tentang lokasi spesifik saya binary su, lokasi apa pun boleh saja asalkan tidak ada ruang putih)

Catatan: Untuk mencari tahu binatau xbinmelakukan di konsol sebelum:> adb shell,>ls /system/xbin/su

Jika ini gagal coba ini mendorong ke direktori ini sebagai gantinya /system/xbin/su. Juga untuk emulator yang menjalankan Android 5.1 dan di bawah ini gunakan sudan tidaksu.pie


  1. Ubah izin binary su

    • Selanjutnya mari kita lakukan sedikit modifikasi dari izin binary su. Kita harus melakukan ini di perangkat emulator melalui adb:

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

Penting!! Perhatikan path su binary (milik saya adalah / system / bin)


  1. Mengatur installdirektif pada su binary dan mengatur adaemon

Ketikkan kode:

su --install

dan untuk mengatur daemon:

su --daemon&

Penting!! Perhatikan jarak


  1. Mengatur SELinux ke Permissive (yaitu mematikan SE Linux)

    • Akhirnya matikan selinux melalui kode ini:

setenforce 0


  1. Buka aplikasi SuperSU dan mungkin meminta untuk memperbarui binari, Anda dapat menggunakan metode Normal.

Catatan: Jika Anda mengalami bootloop, jangan memperbarui binari, gunakan saja apa adanya.


Cukup banyak !!

Buka aplikasi yang membutuhkan izin SU hanya untuk mengecek dan memang SuperSU bertanya apakah Anda ingin memberikannya izin.

masukkan deskripsi gambar di sini

Untuk mendapatkan pembaruan tetap dari binary su (menggunakan metode Normal), kemudian salin system.img dari direktori temp ( Users\AppData\Local\Temp\Android Emulatorfile biasanya bernama acak misalnya 1359g.tmpdengan ukuran besar) dan ganti default system.img.

Perbarui :

Saya telah mencatat lebih mudah untuk mendapatkan gambar sistem sementara di Linux, daripada Windows. Anda dapat mencoba menggunakan gambar foto.

Pembaruan 4 Agustus 2018

Dengan munculnya emulator 27.3.xsekarang membuat menjaga root lebih mudah melalui fitur snapshot (jika menyalin system.imgmetode ini tidak berfungsi):

Idealnya lebih seperti hibernarig perangkat virtual dengan konfigurasi utuh, maka semuanya dilestarikan.

Jepretan

Anda sekarang dapat menyimpan beberapa snapshot AVD untuk konfigurasi perangkat yang diberikan dan memilih snapshot mana yang disimpan untuk dimuat saat Anda memulai emulator. Memulai perangkat virtual dengan memuat snapshot sama seperti membangunkan fisik dari kondisi sleep, sebagai lawan dari mem-boot-nya dari kondisi power-off.

Ini menyiratkan satu-satunya persyaratan untuk memulai emulator adalah menambahkan -writable-systemparameter ke emulator -avd [avdname]perintah normal untuk memulai emulator. ( Menjalankan emulator hanya dengan emulator -avd [avdname]tidak meluncurkan versi root / menyalin atau dapat menyebabkan beberapa kesalahan )

Diuji pada API level 22

Juga untuk masalah bootloop lihat posting lain: Android Emulator: Bagaimana cara menghindari boot loop setelah rooting? dan pembaruannya.

Catatan

Sebagian besar konten dalam referensi adalah untuk versi android yang lebih lama dan karenanya alasan untuk berbagai perintah dan jalur yang saya modifikasi.

Ucapan Terima Kasih;

xavier_fakerat
sumber
1
catatan: Untuk mengetahui bin atau xbin lakukan di konsol sebelumnya:> adb shell,> ls / system / xbin / su
djdance
1
@ xavier_fakerat ya, saya berhenti memperbarui binari. Masalahnya adalah, setelah setiap reboot saya harus me-remount mesin dan menjalankan su --install && su --daemon&emulator, diikuti oleh setenforce 0untuk mendapatkan root. Apakah Anda tahu perbaikan permanen untuk root saat reboot?
Cristian Holdunu
1
Bagus! Metode ini juga berfungsi untuk perangkat nyata yang dapat Anda akses root melalui adb.
Mygod
1
Anda menjawab saya, mengapa emulator android menutup secara tak terduga setelah me-rooting gambar ketika tidak menggunakan -writable-system. Itu karena foto-foto itu.
Rodrirokr
1
Saya menggunakan Pixel 2 XL: Orang-orang tampaknya memiliki masalah yang sama dengan Pixel XL: forum.xda-developers.com/pixel-xl/how-to/…
noraj
33

Berikut adalah daftar perintah yang harus Anda jalankan ketika emulator sedang berjalan, saya menguji solusi ini untuk AVD di Android 2.2:

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

Diasumsikan bahwa su binary terletak di direktori kerja. Anda dapat menemukan su dan superuser di sini: http://forum.xda-developers.com/showthread.php?t=682828 . Anda perlu menjalankan perintah ini setiap kali meluncurkan emulator. Anda dapat menulis skrip yang meluncurkan emulator dan root.

abd
sumber
15
Harap sertakan bagian yang relevan dari posting blog Anda di sini. SO adalah tempat untuk jawaban, bukan tautan.
cHao
2
Tidak ada file atau direktori 'SU'
Mahendran
4
Ini tidak berfungsi pada emulator 2.2, 2.3 atau 2.3.3 Saya hanya mendapatkan kesalahan untuk push adb: kehabisan memori, dir tidak kosong, dll.
Pointer Null
2
@ tikus: Seperti kesalahan mengatakan Anda tidak dapat mendorong biner karena tidak ada cukup ruang pada perangkat virtual. Saat meluncurkan emulator, Anda dapat menambahkan -partition-sizeopsi untuk menentukan ukuran partisi. Coba luncurkan emulator Anda dengantools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
abd
2
Pada emulator yang lebih baru, perintah remount mungkin tidak berfungsi, Anda dapat mengganti: adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system dengan: adb root adb remount
Kamran Ahmed
20

Untuk AVD dengan 5.1.1 dan 6.0 saya menggunakan skrip berikutnya di windows:

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

Butuh UPDATE.zip dari SuperSU. Buka kemasannya ke folder apa pun. Buat file bat dengan konten di atas. Jangan lupa tentukan arsitektur dan perangkat yang diperlukan: set adb=adb -s emulator-5558dan set arch=x64. Jika Anda menjalankan Android di atas atau sama dengan 5.0, ubah set pie=ke set pie=.pie. Menjalankannya. Anda mendapatkan root sementara untuk menjalankan saat ini.

Jika Anda mendapat kesalahan pada partisi sistem remount maka Anda perlu memulai AVD dari baris perintah. Lihat langkah pertama di bawah ini untuk Android 7.

Jika Anda ingin membuatnya terus-menerus - perbarui biner di SuperSU dan simpan system.img dari folder temp sebagai ganti dari system.img default.

Cara mengonversi root sementara yang dihasilkan secara permanen

Pertama - pergi ke SuperSu. Ini menawarkan peningkatan biner. Perbarui dengan cara biasa. Reboot tolak.

Kedua - hanya relevan untuk emulator. AVD yang sama. Intinya adalah bahwa perubahan pada gambar sistem tidak akan disimpan. Anda perlu menyimpannya untuk diri mereka sendiri.

Sudah ada instruksi yang bervariasi untuk emulator yang berbeda.

Untuk AVD Anda dapat mencoba menemukan file system.img sementara, simpan di suatu tempat dan gunakan ketika Anda memulai emulator.

Di Windows terletak di %LOCALAPPDATA%\Temp\AndroidEmulatordan memiliki nama seperti TMP4980.tmp.

Anda menyalinnya ke folder, perangkat avd ( %HOMEPATH%\.android\avd\%AVD_NAME%.avd\), dan diganti namanya menjadi system.img.

Sekarang akan digunakan di awal, bukan yang biasa. Benar jika gambar di SDK diperbarui, itu akan memiliki yang lama.

Dalam hal ini, Anda harus menghapus ini system.img, dan ulangi operasi pada pembuatannya.

Manual lebih rinci dalam bahasa Rusia: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931


Untuk android 7 Anda perlu menjalankan langkah-langkah tambahan: 1. Perlu menjalankan emulator secara manual. Buka folder SDK sdk\tools\lib64\qt\lib. Jalankan dari folder ini emulator dengan opsi -writable-system -selinux disabled Suka ini:

F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
  1. Anda perlu memulai ulang adbddari root:

    adb -s emulator-5554 root

Dan sistem remount:

adb -s emulator-5554 remount

Ini dapat disumbangkan hanya sekali per menjalankan emulator. Dan remount lain dapat merusak mode tulis. Karena itu, Anda tidak perlu menjalankan perintah lain dengan remount, seperti mount -o remount,rw /system.

Langkah-langkah lain tetap sama - unggah biner, jalankan biner sebagai daemon dan sebagainya.

Gambar dari AVD Android 7 x86 dengan root: AVD Android 7 x86 dengan root


Jika Anda melihat kesalahan tentang PIE pada eksekusi subiner - maka Anda mengunggah ke emulator salah biner. Anda harus mengunggah biner bernama su.piedi dalam arsip, tetapi pada emulator itu harus dinamai su, bukan su.pie.

Enyby
sumber
Bisakah Anda memberi tahu saya langkah-langkah untuk membuat root tetap ada?
Satya
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Enyby
Saya menggunakan langkah-langkah ini untuk mendapatkan system.img dari temp 1) cp / tmp / android / emulator-X8F7Hr ~ / Desktop / system.img 2) menyalin system.img ini dari temp dalam sistem-gambar dari Android SDK Tapi ketika saya restart emulator maka emulator tidak dalam kondisi root ... Tolong tunjuki saya jalan yang benar
Satya
lebih baik salin ke direktori AVD. tetapi pertama-tama Anda harus memperbarui biner di SuperSu dalam mode normal.
Enyby
Saya telah memperbarui biner dalam mode normal dan disalin dalam direktori AVD kemudian juga root tidak bertahan
Satya
13

Saya percaya bahwa cara termudah adalah membuat alias untuk perintah sh, misalnya

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

Diuji pada Android Emulator 3.0 dan lebih tinggi.

pemula
sumber
Ini bekerja untuk saya juga (pada x86_64 android 5.02 emulator) sedangkan saran di atas untuk menginstal di xbin tidak.
Yannick
7
Saya dapatmount: '/system' not in /proc/mounts
Kenny Wyland
sistem gagal dengan 72
Duna
3

Di sini paket saya dengan semua yang Anda butuhkan. Atau Anda dapat menggunakan skrip ini:

echo on
set device=emulator-5554
set avd_name=
set adb=d:\Poprygun\DevTools\Android\Android-sdk\platform-tools\adb -s %device%
set emulator=d:\Poprygun\DevTools\Android\Android-sdk\emulator\emulator
set arch=x86
set pie=

echo Close all ANDROID emulators and press any key
pause
start %emulator% -avd Nexus_One_API_25 -verbose -writable-system
echo Wait until ANDROID emulator loading and press any key
pause

%adb% start-server
%adb% root
%adb% remount
%adb% shell setenforce 0
%adb% install D:\SuperSU\SuperSU.apk
%adb% push D:\SuperSU\su\%arch%\su.pie /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push D:\SuperSU\su\%arch%\su.pie /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
pause
exit /b
Andrew Zolotarev
sumber
2

Saya baru saja mengganti dan menetapkan atribut untuk su ke ~ / Android / SDK / sistem-gambar / android-22 / google_apis / x86 / system.img dan sekarang di android 5 Saya selalu memiliki root bahkan untuk sistem baru, cukup untuk menginstal SuperSu. apk

Android 6 is necessary only
adb root
adb shell
>/system/xbin/su --daemon &
>setenfoce 0

setelah itu, SuperSu.apk melihat root. Tapi saya tidak memperbarui file biner

xWeb
sumber
1

Saya menggunakan bagian dari metode dari solusi di atas; Namun, mereka tidak bekerja sepenuhnya. Pada versi terbaru Andy, ini bekerja untuk saya:

Pada Andy (Root Shell) [Untuk mendapatkan, klik kanan ikon HandyAndy dan pilih Term Shell]

Di dalam shell, jalankan perintah ini:

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

Kemudian, instal SuperSU dan instal SU binary. Ini akan menggantikan biner SU yang baru saja kita buat. (Opsional) Hapus SuperSU dan instal Superuser oleh CWM. Instal biner su lagi. Sekarang, root berfungsi!

obc7787
sumber
1

Saya mencoba banyak dari saran di atas, termasuk SuperSU dan tidak dapat membuatnya bekerja tetapi menemukan sesuatu yang jauh lebih sederhana yang berfungsi untuk tujuan saya. Dalam kasus saya, saya hanya ingin dapat menjalankan sqlite pada command prompt. Saya hanya memutar emulator dengan versi Android yang lebih lama (Lollipop) dan mendapatkan akses root segera.

Alan Todtenkopf
sumber
-1

Saya menemukan bahwa emulator API 23 x86_64 default telah di-root secara default.

Vladimir Berezkin
sumber
Dari yang saya tahu, hanya karena Anda memiliki # ketika Anda mengetik "adb root", tidak berarti aplikasi dapat mengambil keuntungan dari hak root. Percobaan apa pun untuk menulis di mana saja di / sistem menghasilkan kesalahan RO, bahkan mencoba untuk mengubahnya kembali menjadi RW.
Fusseldieb