System-App-Berechtigungen

Ich habe eine Anwendung, für deren Ausführung Root-Berechtigungen erforderlich sind. Kein Problem, alle meine persönlichen Geräte sind gerootet, daher fühle ich mich mit dem Prozess sehr wohl. Das Problem ist, dass diese Anwendung auf firmeneigenen Geräten verwendet werden soll, die an bestimmte Mitarbeiter ausgegeben werden, und ich möchte nicht, dass sie die Anwendung deinstallieren können, noch möchte ich, dass sie Root-Zugriff auf das Gerät haben.

Ich dachte, dass der folgende Prozess meine Ziele erreichen würde:

  1. Rooten Sie das Gerät
  2. Installieren Sie meine App als System-App
  3. Starten Sie die Anwendung und gewähren Sie ihr su-Rechte
  4. Entrooten Sie das Gerät

Da es sich um eine System-App handeln würde und das Gerät nicht gerootet wäre, würden Benutzer daran gehindert, die App zu entfernen. Ich bin mir nicht sicher, ob diese Anwendung ihre Root-Rechte behalten würde, wenn das Gerät nicht mehr gerootet ist.

Jedes Feedback oder jeder Einblick wäre sehr willkommen!

Sie können Ihre App nicht als System-App installieren, da Sie denselben Signaturschlüssel benötigen, mit dem das betreffende ROM signiert wurde. Wenn das Gerät entrootet wird, verliert es automatisch das Root.
Was ist mit Anwendungen wie Titanium Backup Pro oder /system/app Mover, die Benutzer-Apps in System-Apps konvertieren? Mit einer dieser Anwendungen ist es möglich, eine Benutzer-App zu einer System-App zu machen.
Selbst wenn dies funktionieren würde, was würde jemanden daran hindern, das Gerät erneut zu rooten und die App zu entfernen?
Technisch nichts. Aber da die App, die ich installieren möchte, zur Überwachung und Verwaltung des Geräts aus der Ferne dient, könnte ich feststellen, ob dies der Fall ist.
Wie? Aus der obigen Aussage - "Ich möchte nicht, dass sie die Anwendung deinstallieren können, noch möchte ich, dass sie Root-Zugriff auf das Gerät haben." Die Sache ist, dass sie es jederzeit deinstallieren können. Es gibt nichts, was sie daran hindert, selbst mit ADB- und USB-Kabeln könnten die Mitarbeiter technisch versiert sein, ohne dass Sie es wissen .
Eigentlich wäre es ziemlich einfach zu sagen .... wenn die App aufhört zu berichten und die Untersuchung des Geräts ergibt, dass sie es deinstalliert haben, feuere ich sie wegen Manipulationen an meiner Ausrüstung. Wenn ich durch die Überwachung finde, dass SuperUser.apk installiert ist, weiß ich, dass sie das Gerät neu gerootet haben, und ich feuere sie wegen Manipulationen an meiner Ausrüstung.
Hmmm... das einzige, was mir einfällt, ist, ein benutzerdefiniertes ROM zu erstellen, das hängt davon ab, um welches Gerät es sich handelt. Wenn sie alle gleich sind, wird die Arbeit viel einfacher, wenn nicht, haben Sie Probleme . Und ändern Sie einfach die AOSP-Quelle, um zu verhindern, dass der Paketmanager deinstalliert wird, das heißt, Sie müssen eine schnelle einzeilige Lösung in den Eingeweiden davon hacken und sie mit dem Superuser und Ihrer App bündeln, die nicht sichtbar ist , wenn Sie ohne Roll-Your-Own-Ansatz sprechen, haben Sie ziemlich viel Pech!
@ t0mm13b Eigentlich sollte dieser TiBu-Ansatz funktionieren: root → TiBu installieren → App in System-App konvertieren (dh sie wird in installiert /system/apps) → TiBu deinstallieren → unroot. Erledigt. Diese App hätte dann Zugriff auf die Schutzstufen „signatureOrSystem“. Aber ihm Root- Zugriff zu geben, ist etwas anderes (und wird hier wahrscheinlich nicht einmal benötigt).

Antworten (1)

Wie ProNetGuru bereits betonte, könnte Titanium Backup tatsächlich dafür verwendet werden:

  1. Wurzel
  2. Installieren Sie TiBu
  3. App in System-App umwandeln (d. h. sie wird installiert in/system/apps
  4. TiBu deinstallieren
  5. entwurzeln.

Erledigt. Diese App hätte dann Zugriff auf die Schutzstufen „signatureOrSystem“ (falls in ihrem Manifest so angegeben).

Ihm Root-Zugriff zu geben, ist etwas anderes – aber hier wahrscheinlich nicht einmal erforderlich.

Damit eine App Level hat, signatureOrSystemmüsste sie android:sharedUserId="android.uid.system"im Manifest enthalten und mit demselben Signaturschlüssel wie das ROM signiert sein ... tbh, habe es noch nie versucht ... für eine normale App, die ein normales Manifest hat, da das obige Tag nicht vorhanden ist bedeutet nicht unbedingt, dass es diese Signatur- oder Systemschutzstufe hat, selbst wenn es als „System-App“ installiert wurde.
Oh. Ich habe diesen Teil möglicherweise falsch verstanden (also ist es dann nur das Schutzniveau "System", aber was ist dann bitte der Unterschied zwischen "Signatur" und "SignaturOrSystem"? Es gibt kein separates "Schutzniveau-System"). Aber bitte korrigieren Sie mich: Ich dachte, es ist nicht möglich, "einer App Root-Zugriff zu geben" und dann das Gerät zu unrooten, während es immer noch hängt. Dies ist also das Naheste, was man unter den gegebenen Umständen erreichen kann.
signatureOrSystemSchutzstufe bedeutet, dass es rm -rf /ohne Root auskommt! Und Dinge tun, die ein normaler Root tun kann (UID von 0) - das ist ultimativ. Es gibt viele verschiedene sharedUserIdEbenen, wie zum Beispiel: android.uid.phone, wenn dieses android:sharedUserIdTag das obige Beispiel hat, bedeutet dies, dass eine App alles in Bezug auf die Telefonieebene tun kann und nichts anderes. Es ist eine viel feinere Zugriffskontrolle hinter den Kulissen für Apps auf Systemebene und auch zur Minimierung von Sicherheitsverletzungen und Böswilligkeit. Alles, was TiBu tut, es mountet das System r/w und verschiebt die App dorthin, sonst nichts.
Und wenn diese System-Apps, dh in das ROM gebacken, ihre digitale Signatur entfernt haben, wird sie sich weigern, zu laufen, also können Sie sehen, warum es einen anderen Schutzgrad gibt, der niedriger ist als die normalen Android-Manifest-Berechtigungen.
Um dem noch mehr Gedanken zu machen, nehmen wir an, das OP ging los und baute sein eigenes ROM mit der besagten App, die dieses Tag im Manifest hat, im System installiert und mit einer neu erstellten ROM-Signatur signiert wurde - glückliche Tage. Wenn das OP dann beschließt, die genannte App über den Play Store zu aktualisieren und von dort aus zu verteilen, wird das Upgrade fehlschlagen, da die Signaturschlüssel nicht übereinstimmen, und die einzige Möglichkeit, das Upgrade zum Laufen zu bringen, wäre ... ja, das System zu deinstallieren app, und aus dem Play Store installieren! Puh schwer alles zu erklären. :)
Yuck. Es scheint also, dass die gesamte Frage eher XY ist. Worüber reden wir? Was wird wirklich benötigt? Warum muss es "eine System-App mit Root-Zugriff" sein? Vielleicht lösche ich meine Antwort lieber gleich?
Es ist eher so, als würde OP die Frage als XY festlegen, und ja, OP hat gesagt: "Starten Sie die Anwendung und gewähren Sie su-Rechte darauf" und entwurzeln Sie sie, was OP in eine Situation ohne Gewinn bringt. Die folgende Antwort ist prägnant und einfach und die richtige Antwort, obwohl OP nichts anderes akzeptiert ...
OK, also werde ich an dieser Stelle gehen. OP sollte testen, ob es für ihn funktioniert, und dann akzeptieren, welche der beiden Antworten sich als richtig erwiesen hat.
es ist trüb!!! :Tun/
Ich schätze all die Informationen und Einblicke, die von allen bereitgestellt werden, sehr. Ich werde dies in der nächsten Woche oder so testen und eine Antwort akzeptieren und alle wissen lassen, wie es funktioniert.
@t0mm13b du bist ein bisschen grün. Überprüfen Sie Ihre Fakten (und nehmen Sie es bitte nicht übel). Du liegst einfach total falsch mit einer Menge von dem, was du in diesen Kommentaren gesagt hast. Lassen Sie mich wissen, wenn Sie Fragen haben. System-Apps können das nicht rm -rf /. Die Systempartition ist schreibgeschützt. Sie müssen es r/w erneut einhängen. Außerdem müssen Sie nicht dieselbe Signatur wie System-Apps haben, um eine System-App zu sein. signatureOrSystemauf einer Berechtigung hat nichts damit zu tun, eine System-App zu sein. Es wird Apps im Systemordner ODER Apps gewährt, die mit demselben Schlüssel wie das System selbst signiert sind.
@dcow, während ich die meisten Ihrer Fakten bestätigen kann: Ist eine "System-App" nicht genau so definiert, dass sie im Systemordner installiert ist? Und könnten sie den Remount nicht einfach selbst durchführen, bevor sie ihn ausführen rm -rf? Aber Sie haben natürlich Recht, wenn Sie sagen, "nur die Berechtigung im Manifest zu haben, reicht nicht": Richtig, es muss entweder mit dem "Systemschlüssel" signiert oder zumindest als System-App installiert werden, damit diese Berechtigung vorhanden ist gewährt – aber das ist, was Schritt #3 der Antwort tut.