Permissions fremder Apps zur Laufzeit (de-)aktivieren

  • Antworten:11
Chris B.
  • Forum-Beiträge: 6

14.11.2012, 19:28:45 via Website

Hallo,

im AppStore findet man haufenweise Programme die es ermöglichen die Berechtigungen fremder Apps selektiv ein- und auszuschalten. Berühmte Vertreter sind LBE Privacy Guard und Permission Denied, wo der Nutzer einstellen kann ob er eine Permission zulässt, verweigert oder gefragt werden möchte. Ich würde diese Funktionalität gerne für mein eigenes Programm nutzen und wollte Fragen ob jemand weiß wie das funktioniert bzw. wie das überhaupt möglich ist. In einigen englischsprachigen Foren stand das der Entwickler derartiger Software auf Low-Level Ebene arbeitet. Was genau ist damit gemeint? Muß ich hierfür hardwarenahe Programmierung einsetzen wie das bei C oder Assembler der Fall ist und wenn ja gibt es dazu weiterführende Literatur oder Tutorials?

Gruß
Chris

Antworten
Chris B.
  • Forum-Beiträge: 11

15.11.2012, 12:05:40 via Website

Hi!

Diese Apps brauchen Root-Zugriff,

grundsätzlich ist das Verfahren nicht durch eine API unterstützt, um so etwas zu realisieren muss man das APK bekommen, entpacken, das Manifest ändern und dann einspielen.
Unschönerweise fliegt die modifizierte App mit einer SecurityException auf die Nase wenn sie doch auf eine Methode zurückgreift, die die Berechtigung braucht. Soweit mein Verständnis von solchen Apps, oder ist das mittlerweile besser geworden?

Grüße,
Chris

Antworten
Chris B.
  • Forum-Beiträge: 6

15.11.2012, 15:58:31 via Website

Hallo Christoph,

danke erstmal für die Antwort.

Diese Apps brauchen Root-Zugriff
Das solche Programme nur auf gerooteten Handys funktionieren war mir schon klar.

Unschönerweise fliegt die modifizierte App mit einer SecurityException auf die Nase wenn sie doch auf eine Methode zurückgreift, die die Berechtigung braucht.
Darüber habe ich auch schon oft gelesen, allerdings ist mir das bei LBE noch nie passiert. Das liegt vermutlich daran das diese Software gefakte Daten verschickt, die der App vorgaukeln, dass es sich um echte Geräte- bzw. User Daten handelt. So zumindest steht es in der Dokumentation.

grundsätzlich ist das Verfahren nicht durch eine API unterstützt, um so etwas zu realisieren muss man das APK bekommen, entpacken, das Manifest ändern und dann einspielen.
Du meinst also das die Software einfach nur nach allen installierten APKs sucht, sich das APK herausgreift deren Permissions geändert werden sollen, diese entpackt, die entsprechende Manifest modifiziert und das APK einfach wieder zurückspielt? Wenn ich so darüber nachdenke klingt das eigentlich ganz logisch und total einfach. :) Dann stellt sich mir aber die Frage wie die Änderungen durchgeführt werden sollen ohne die App neu zu installieren (bzw.kompilieren). Außerdem müssten dann bei dem Vorgang doch alle Daten und Einstellungen verloren gehen oder wie soll das technisch funktionieren?

Gruß
Chris

Antworten
Chris B.
  • Forum-Beiträge: 11

15.11.2012, 16:55:24 via Website

Hi,


Darüber habe ich auch schon oft gelesen, allerdings ist mir das bei LBE noch nie passiert. Das liegt vermutlich daran das diese Software gefakte Daten verschickt, die der App vorgaukeln, dass es sich um echte Geräte- bzw. User Daten handelt. So zumindest steht es in der Dokumentation.
Das klingt clever, ich könnte mir da aber nur vorstellen, das die auf bytecode-Ebene arbeiten und die Calls die gegen die API gehen mit ihren Dummy-Calls ersetzen. Damit könnte man dann auch die Rückfrage-Option realisieren. Klingt sehr elegant wie die das gemacht haben, Hut ab!


Du meinst also das die Software einfach nur nach allen installierten APKs sucht, sich das APK herausgreift deren Permissions geändert werden sollen, diese entpackt, die entsprechende Manifest modifiziert und das APK einfach wieder zurückspielt? Wenn ich so darüber nachdenke klingt das eigentlich ganz logisch und total einfach. :) Dann stellt sich mir aber die Frage wie die Änderungen durchgeführt werden sollen ohne die App neu zu installieren (bzw.kompilieren). Außerdem müssten dann bei dem Vorgang doch alle Daten und Einstellungen verloren gehen oder wie soll das technisch funktionieren?
Passiert das wenn man ein modifiziertes APK einfach wieder drüberspielt? Hab ich noch nicht probiert.

Knifflig kann das ganze aber auch in Bezug auf Signaturen werden, ich glaube manche Apps könnten da heulen - wenn sie feststellen das ihr Programmcode geändert wurde...

Antworten
Chris B.
  • Forum-Beiträge: 6

15.11.2012, 17:24:32 via Website

Klingt sehr elegant wie die das gemacht haben, Hut ab!
Finde ich auch. Leider ist LBE closed source. Würde mich brennend interessieren, wie das realisiert wurde. Falls tatsächlich auf bytecode Ebene gearbeitet wurde, ist die Sache wohl komplexer als ich dachte.

Passiert das wenn man ein modifiziertes APK einfach wieder drüberspielt? Hab ich noch nicht probiert.
Gehe stark davon aus, werde es aber auf jeden Fall mal testen. Das ist bisher der einzige Ansatz den ich habe. :)

Knifflig kann das ganze aber auch in Bezug auf Signaturen werden, ich glaube manche Apps könnten da heulen - wenn sie feststellen das ihr Programmcode geändert wurde...
Stimmt, darüber habe ich noch gar nicht nachgedacht. Kann man die APK überhaupt entpacken ohne Owner zu sein? Dachte eine Signierung der App mittels eines Zertifikat soll vor Code/Datei Manipulation schützen.

Gruß
Chris

Antworten
Chris B.
  • Forum-Beiträge: 6

15.11.2012, 18:20:35 via Website

Hallo Harald,

danke für die Info. Dann kann mein Vorhaben also gar nicht gelingen. Ich würde ja dann quasi die App doppelt installieren, da ich meine eigene Signatur verwenden müsste, was natürlich unsinnig ist. Tja, dann muß wohl doch ne andere Lösung finden. Trotzdem danke euch beiden für eure Hilfe.

Gruß
Chris

Antworten
Chris B.
  • Forum-Beiträge: 11

15.11.2012, 21:23:13 via Website

Du wirst niemals eine fremde APK mit Deinem Key signieren können.

Warte warte, bevor diese Aussage genauer analysiert wird würde ich behaupten, das diese Aussage nicht unbedingt beachtet werden muss:
1. unsignierte APKs installieren funktioniert.
2. eine signierte APK zu entpacken funktioniert auch [Einschränkung hier: Wenn eine App prüfen kann, wie die Signatur der installierten APK lautet, hast du verloren]

Also wäre mein Vorschlag, signierte APK zu entpacken, zu modifizieren, neue (unsignierte oder mit eigenem Schlüssel signierte) APK erstellen und installieren.

Du wirst niemals eine fremde APK mit Deinem Key signieren können.
... so dass der Key übereinstimmt.


Grüße,
Christoph

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

15.11.2012, 21:36:58 via App

Wir reden hier über fremde signierte Apps. Also schlabbere ich mal einen Teil Deiner Antwort. Ich bleibe bei meinen Aussagen.

Den Vorschlag eine fremde signierte App zu entpacken und unsigniert oder mit eigenem Key weiter zu verwenden. Boah. Kein Kommentar.

Antworten
Chris B.
  • Forum-Beiträge: 11

14.01.2013, 18:16:41 via Website

Auch wenn der Thread alt und eingeschlafen ist, es gibt Progs die etwas wie das geforderte machen:

LBE Privacy Guard und PDroid

Da PDroid Opensource ist könnte der OP sich dort Info holen.

PDroid ist hier erklärt: h t t p://www.n-droid.de/android-tutorial-app-berechtigungen-in-4-schritten-zu-pdroid-privacy-protection-root.html
Den Link müsst ihr leider copy und pasten, da ich noch keine Links posten darf...

Antworten
Andy N.
  • Forum-Beiträge: 3.112

14.01.2013, 18:46:59 via App

Es gibt so ein kleines Tool, das die Signatur fixt.
Bis jetzt hab ich das nur bei Google-Apps ausprobiert.
Man kann sogar den Bytecode abändern, und am Ende schafft es das kleine Tool, das die App ohne Probleme wieder angenommen wird . Ob das jetzt aber nur bei Google Apps funktioniert und ob eine neue Signatur verpasst wird hab ich mir nicht angeschaut. Aber ich vermute, dass die App bei signiert wird.

Antworten