2012-12-10 1 views
10

Ich arbeite an AOSP. Ich habe meine apk erfolgreich hinzugefügt, um zu bauen. Jetzt möchte ich Root-Zugang zu meiner App geben. Ich möchte keinen Root-Zugriff auf andere Apps bereitstellen oder die Superuser-App in meinem Build installieren. Ich möchte nur meine App hinzufügen, um Root-Zugriff zu erhalten. Wie kann ich das erreichen?Wie kann AOSP geändert werden, damit bestimmte Apps Root-Zugriff erhalten?

Ich ging durch die su.c Datei im Pfad System/Extras/su aber ich bin nicht in der Lage den gesamten Code zu verstehen.

Als ich durch den Code ging, denke ich mein Ziel erreicht werden kann, wenn ich könnte modifysu.c Root-Zugriff auf meine App bieten, compile it and add the binary zu der Build. Habe ich recht?

+1

Wäre es nicht ein riesiges Sicherheitsbargnet, wenn * irgendeine * App nur root bekommen könnte? –

+0

Wenn Sie nicht wissen, wie dies zu tun ist, ist es höchst unwahrscheinlich, dass Sie wissen, wie Sie den Code auf Sicherheit prüfen, bevor Sie ihn als root laufen lassen. –

+0

aus dem Code ich gefunden, dass es Root-Zugriff auf Shell gibt, auf die gleiche Weise möchte ich die XML-Datei in data/system/packages.xml analysieren und finden Sie die UID meiner App und erlauben es Root-Zugriff auf das System – Neji

Antwort

6

Sie bewegen sich in die richtige Richtung. Sie müssen die Quellen für su.c überprüfen Das einzige Problem, das Sie gegenüberstellen können, ist, wie Sie Ihr Programm als root ausführen. Um dies zu tun, müssen Sie SUID Sticky Bit für die ausführbare Datei Ihrer Anwendung setzen. Dazu benötigen Sie system/core/include/private/android_filesystem_config.h Datei (Struktur android_files[]), zum Beispiel für su-Programm zu modifizieren, können Sie sehen, wie dieses Bit gesetzt ist:

{ 06755, AID_ROOT,  AID_ROOT,  "system/xbin/su" }, 
+1

Dieser Ansatz funktioniert nicht, da Android-Anwendungen keine eindeutigen ausführbaren Dateien haben. Stattdessen sind sie letztlich Bibliotheken zu einer gemeinsamen ausführbaren Datei. Zygote gabelt sich, um einen Anwendungsprozeß zu verursachen, aber das exec() 's, es ändert gerade UID und lädt eine Bibliothek mit dem Anwendungscode. –

+0

Ich verstehe nicht. So funktioniert su. Ich habe diesen Ansatz in meinen Projekten mehrmals angewendet. – Yury

+0

Yury, kannst du mir sagen, welchen Teil du in beiden Dateien aktualisiert hast, um Root-Zugriff auf deine App zu geben? – Neji

3

Chainfire ein a guide on su geschrieben hat und wie es zu benutzen für normale Anwendungen. Wenn Sie beabsichtigen, mit etwas anderem als Ihrem eigenen Telefon zu arbeiten, schlage ich vor, dass dies der Ansatz ist, dem Sie folgen.

+0

Ich habe keine ausführbare Binärdatei. Ich möchte die Root-Berechtigung auf ein vorinstalliertes/vorinstalliertes Apk setzen. Was soll ich machen? –

Verwandte Themen