Wie können "ShareIt", "Xender" usw. APK installieren, ohne die Berechtigung "Unbekannte Quelle" zu benötigen?

9

Wenn ich eine apk installieren muss (z. B. von einer SD-Karte), muss ich normalerweise "Unbekannte Quellen" in den Einstellungen meines Telefons aktivieren. Wenn ich jedoch APK mit "ShareIt" von einem anderen Telefon übertrage und installiere, ist für mein Telefon keine solche Berechtigung erforderlich.

Wie kann ShareIt diese Berechtigung umgehen?

Neo
quelle
Wurde ShareIt auf Ihrem Gerät vorinstalliert oder haben Sie es selbst installiert?
Izzy

Antworten:

8

Ich habe ein bisschen gegraben und es ist ohne Systemberechtigungen ab API 21 möglich https://developer.android.com/reference/android/content/pm/PackageInstaller.html .

Tatsächlich gibt es ein Codebeispiel von Google, das zeigt, wie es geht. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java

Neo
quelle
Ein großes Lob für das Ausgraben, um herauszufinden, ob die App dies tatsächlich verwendet hat ...
Andy Yan
2
@beeshyams - Nicht wirklich. Die App kann keine "stille" Installation durchführen. Aufgrund der ausstehenden Absicht ist der explizite "Klick" des Benutzers zum Zeitpunkt der Installation erforderlich.
Neo
1
@Neo Verdammt, also habe ich gerade eine stille Installation angenommen, als ich meine Antwort schrieb ... Mein schlechtes.
Andy Yan
2
In anderen Nachrichten scheint das Paket von ShareIt irgendwie verschleiert zu sein. Obwohl meine Tools bei der Java-Codegenerierung erfolgreich waren, ist an den Stubs nichts Wesentliches zu erkennen.
Andy Yan
Warten Sie - ich habe ein anderes Tool verwendet, und ich glaube, ich habe es vielleicht. Ich werde es nach Überprüfung in Ihre Antwort bearbeiten lassen.
Andy Yan
4

Wenn die Apps unbeaufsichtigt installiert werden (ohne den üblichen Installationsdialog), rufen diese Apps vermutlich direkt auf pm, dh PackageManagerwelche als System-App die Berechtigung trägt android.permission.INSTALL_PACKAGES.

Das Telefon pmmuss gerootet sein, damit die App in einem Root-Kontext aufrufen kann. Andernfalls wird die Meldung "Weder Benutzer xxxx noch aktueller Prozess haben android.permission.INSTALL_PACKAGES" angezeigt.

BEARBEITEN: Wie @Izzy im Kommentar hervorhob, android.permission.INSTALL_PACKAGESwird es auch Apps gewährt, auf denen installiert wurde /system. Weitere Informationen finden Sie im folgenden Kommentar und in dieser SO-Frage .

Andy Yan
quelle
Beachten Sie, dass ich ShareIt nicht ausprobiert und analysiert habe, was es wirklich tut, sondern nur die wahrscheinlichste Theorie vorgebracht habe. Wenn Sie nicht verwurzelt sind und es immer noch funktioniert hat, haben wir möglicherweise ein viel interessanteres Problem zu untersuchen.
Andy Yan
1
@beeshyams In China würden viele App-Märkte von Drittanbietern eine stille oder automatisierte Installation durchführen. Der erste Weg ist wie hier beschrieben und sie werden bei der ersten Installation nach der Root-Erlaubnis fragen. Die zweite besteht darin, Sie aufzufordern, einen Eingabehilfedienst zu aktivieren und dann die Klicks auf die Schaltflächen "Installieren" zu automatisieren.
Andy Yan
1
Mein Telefon ist nicht gerootet. Und es wurden auch keine Root-Berechtigungen abgefragt. In Indien ist ShareIt jedoch eine sehr beliebte Methode zur Installation von Apps über Peer-to-Peer.
Neo
1
@beeshyams Vermeiden Sie diese App und ihre schrecklichen erforderlichen Berechtigungen. Verwenden Sie stattdessen Open Source Share über HTTP (verfügbar auf F-Droid). Ich bin in keiner Weise mit der App verbunden.
Grimoire
1
@beeshyams Es funktioniert mit jedem Gerät, das mit demselben Netzwerk verbunden ist. Soweit ich das beurteilen kann, muss der Host Android sein, aber jedes Gerät kann sich dann mit demselben Netzwerk verbinden und die in der App angegebene HTTP-Adresse aufrufen, um die Datei (en) herunterzuladen.
Grimoire