Bagaimana "ShareIt", "Xender" dll dapat menginstal APK tanpa memerlukan izin "sumber tidak dikenal"?

9

Biasanya, jika saya harus menginstal apk (katakanlah dari kartu SD), saya harus mengaktifkan "Sumber Tidak Dikenal" di pengaturan ponsel saya. Tetapi ketika saya mentransfer dan menginstal APK apa pun dari ponsel lain menggunakan "ShareIt", tidak ada izin seperti itu yang diperlukan oleh ponsel saya.

Bagaimana ShareIt dapat melewati izin ini?

Neo
sumber
Apakah ShareIt sudah diinstal sebelumnya pada perangkat Anda, atau apakah Anda menginstalnya sendiri?
Izzy

Jawaban:

8

Saya melakukan sedikit penggalian dan dimungkinkan tanpa izin Sistem dari API 21 dan seterusnya https://developer.android.com/reference/android/content/pm/PackageInstaller.html .

Bahkan, ada contoh kode oleh Google yang menunjukkan cara melakukannya. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java

Neo
sumber
Kudos untuk menggali ini, sekarang untuk mengetahui apakah aplikasi tersebut benar-benar menggunakan ini ...
Andy Yan
2
@beeshyams - Tidak juga. Aplikasi tidak dapat melakukan instalasi "diam". Melalui niat yang tertunda, "klik" eksplisit pengguna diperlukan pada saat pemasangan.
Neo
1
@Neo Sial, jadi saya hanya berasumsi menginstal diam ketika saya menulis jawaban saya ... Saya buruk.
Andy Yan
2
Dalam berita lain, paket ShareIt tampaknya entah bagaimana dikaburkan, jadi meskipun alat saya berhasil dalam pembuatan kode Java, tidak ada yang signifikan dapat dilihat dari bertopik.
Andy Yan
Tunggu - Saya menggunakan alat lain, dan saya pikir saya mungkin sudah mendapatkannya. Saya akan mengeditnya di jawaban Anda setelah verifikasi.
Andy Yan
4

Jika aplikasi diinstal secara diam-diam (tanpa dialog instalasi yang biasa), mungkin aplikasi ini langsung memanggil pm, yaitu PackageManager, yang sebagai aplikasi sistem mendapat izin android.permission.INSTALL_PACKAGES.

Telepon harus di-rooting agar aplikasi dapat memanggil pmdalam konteks root, jika tidak Anda akan disambut dengan pesan "Baik pengguna xxxx maupun proses saat ini memiliki android.permission.INSTALL_PACKAGES".

EDIT: Seperti yang ditunjukkan @Izzy dalam komentar, android.permission.INSTALL_PACKAGESjuga diberikan untuk aplikasi yang diinstal /system. Lihat di bawah komentar dan pertanyaan SO ini untuk wawasan lebih lanjut.

Andy Yan
sumber
Perhatikan bahwa saya tidak benar-benar mencoba ShareIt dan menganalisis apa yang sebenarnya dilakukannya, hanya mengedepankan teori yang paling mungkin. Jika Anda belum di-rooting dan masih berfungsi, maka kami mungkin memiliki masalah yang jauh lebih menarik untuk diteliti.
Andy Yan
1
@beeshyams Di Cina di sini, banyak pasar aplikasi pihak ke-3 akan melakukan pemasangan diam atau otomatis. Cara pertama adalah seperti yang dijelaskan di sini, dan mereka akan meminta izin root pada instalasi pertama; yang kedua adalah meminta Anda untuk mengaktifkan layanan aksesibilitas, lalu mengotomatiskan klik pada tombol "instal".
Andy Yan
1
Ponsel saya tidak di-root. Dan itu tidak meminta izin root juga. Namun di India, ShareIt adalah metode pemasangan aplikasi yang sangat populer melalui peer-to-peer.
Neo
1
@beeshyams Hindari aplikasi itu dan mol yang mengerikan dari izin yang diperlukan. Pertimbangkan untuk menggunakan Berbagi sumber terbuka melalui HTTP (tersedia di F-Droid), sebagai gantinya. Saya sama sekali tidak berafiliasi dengan aplikasi.
Grimoire
1
@beeshyams Ini berfungsi dengan semua perangkat yang terhubung ke jaringan yang sama. Sejauh yang saya tahu, host harus Android, tetapi perangkat apa pun kemudian dapat terhubung ke jaringan yang sama dan mengunjungi alamat HTTP yang ditunjukkan dalam aplikasi untuk mengunduh file.
Grimoire