Packages.xml und Einschränkung von Permissions/Apps/Einstellungen

  • Antworten:10
katuschi
  • Forum-Beiträge: 19

10.03.2014, 08:28:47 via Website

Hallo :)
Im Rahmen meiner Bachelorarbeit sollte ich eine App zustande bringen, die Permissions anderer Apps einschränken kann, den Start von Apps (nach Klick) unterbindet und das am besten user- und zeitabhängig.

Mein Plan sah folgendermaßen aus:
ich kommentiere einfach die betreffenden Zeilen in /data/system/packages.xml aus und gut ist es...
Habe das nun manuell einmal durchgespielt und die Applikation stört es leider gar nicht, dass ihr eigtl Zeilen fehlen.

ein kleines Beispiel: bei facebook die Kameraberechtigungen auskommentieren
1<package name="com.facebook.katana" codePath="/data/app/com.facebook.katana-2.apk" nativeLibraryPath="/data/app-lib/com.facebook.katana-2" flags="572996" ft="1444701eb40" it="1441de6a1a2" ut="144470834f1" version="1263992" userId="10102" installer="com.android.vending">
2<sigs count="1">
3<cert index="19" key="..." />
4</sigs>
5<perms>
6<item name="android.permission.READ_EXTERNAL_STORAGE" />
7<item name="android.permission.WRITE_EXTERNAL_STORAGE" />
8<item name="android.permission.WRITE_CALL_LOG" />
9<item name="android.permission.ACCESS_WIFI_STATE" />
10<item name="android.permission.ACCESS_COARSE_LOCATION" />
11<item name="com.facebook.receiver.permission.ACCESS" />
12<item name="android.permission.GET_ACCOUNTS" />
13<item name="android.permission.READ_CONTACTS" />
14<item name="android.permission.WRITE_CONTACTS" />
15<item name="android.permission.AUTHENTICATE_ACCOUNTS" />
16<item name="android.permission.READ_PHONE_STATE" />
17<item name="android.permission.READ_CALENDAR" />
18<item name="android.permission.READ_SMS" />
19<!--<item name="android.permission.CAMERA" />-->
20<item name="android.permission.ACCESS_FINE_LOCATION" />
21<item name="android.permission.MANAGE_ACCOUNTS" />
22<item name="android.permission.BROADCAST_STICKY" />
23<item name="android.permission.ACCESS_NETWORK_STATE" />
24<item name="android.permission.RECORD_AUDIO" />
25<item name="android.permission.WAKE_LOCK" />
26<item name="com.android.launcher.permission.INSTALL_SHORTCUT" />
27<item name="com.facebook.katana.permission.RECEIVE_ADM_MESSAGE" />
28<item name="com.facebook.katana.permission.CROSS_PROCESS_BROADCAST_MANAGER" />
29<item name="com.google.android.c2dm.permission.RECEIVE" />
30<item name="android.permission.MODIFY_AUDIO_SETTINGS" />
31<item name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
32<item name="android.permission.READ_PROFILE" />
33<item name="android.permission.WRITE_CALENDAR" />
34<item name="android.permission.WRITE_SYNC_SETTINGS" />
35<item name="com.facebook.katana.provider.ACCESS" />
36<item name="com.facebook.katana.permission.C2D_MESSAGE" />
37<item name="com.facebook.permission.debug.SYSTEM_COMMUNICATION" />
38<item name="android.permission.INTERNET" />
39<item name="com.facebook.orca.provider.ACCESS" />
40<item name="android.permission.CHANGE_WIFI_STATE" />
41<item name="android.permission.READ_SYNC_SETTINGS" />
42<item name="android.permission.VIBRATE" />
43<item name="android.permission.READ_CALL_LOG" />
44<item name="com.facebook.permission.prod.FB_APP_COMMUNICATION" />
45<item name="android.permission.CHANGE_NETWORK_STATE" />
46<item name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
47</perms>
48</package>

Des Weiteren dachte ich mir, wenn ich entweder den ganzen Teil auskommentiere, kann man die App nicht mehr starten... aber das stört die App auch nicht. Bin ich so auf dem Holzweg?

Plan B war dann, dass ich schnell mal die Zugriffsberechtigungen der Apps in /data/app/ ändere, damit die App nicht mehr startbar ist...
Manuell funktioniert die Variante, sodass die App bei Klick einfach abstürzt und nicht startet (nicht unbedingt schön, aber mal ein Anfang...)
Wenn ich das mithilfe von
1String[] command = { "su", "-c", "chmod -rwx /data/app/*"+ chosenApp +".apk" };
versuche, klappt es jedoch nicht.

Hoffe, ihr könnt mir evtl Tipps geben, wo ich mit entweder zwischen App und Permission einklinken kann und falsche Daten senden kann oder einfach den Zugriff unterbinden kann und/oder wo ich den Start von Apps unterbinden kann.

LG :)

Antworten
impjor
  • Forum-Beiträge: 1.793

10.03.2014, 15:27:00 via Website

Ich hoffe du bist dir bewusst, dass dies keinesfalls ein Projekt für einen Anfänger ist.
Wenn du einer App so eine Berechtigung entziehst, wird sie, wenn sie die Berechtigung braucht, einfach abstürzen. Das geht i.d.R. noch relativ einfach. Allerdings werden die Änderungen des Manifest erst "sichtbar", wenn du die App neu installierst.
Fake-Daten senden ist nochmal schwieriger und ohne ein Framework wie Cydia oder Xposed würde ich da gar nichts versuchen. Du kannst dir ja mal den Quelltext von XPrivacy ansehen.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
katuschi
  • Forum-Beiträge: 19

10.03.2014, 16:32:39 via Website

vielen Dank für deine Antwort.

Das ist mir bewusst, dass das kein Anfängerprojekt ist (zum Glück bin ich ja keiner... *Ironie* :D )

Dass die App abstürzt, wenn ich ihr dringend benötigte Berechtigungen entziehe ist in Ordnung und schon mit dem Prof abgesprochen :)

Allerdings werden die Änderungen des Manifest erst "sichtbar", wenn du die App neu installierst.
Welches Manifest?

Stimmt, das kann ich noch machen. Mit XPrivacy habe ich mich auch schon beschäftigt.

LG :)

Antworten
impjor
  • Forum-Beiträge: 1.793

10.03.2014, 16:46:04 via Website

Jede App hat einen eigenen Linux-Benutzer, der die entsprechenden Berechtigungen hat. Welche Berechtigungen dieser Benutzer hat wird bei der Installation/Update festgelegt und aus dem Manifest der apk ausgelsen (AndroidManifest.xml). Die packages.xml wird beim herunterfahren neugeschrieben und erst beim reboot wieder angewendet, da kann ich mich aber auch täuschen.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
katuschi
  • Forum-Beiträge: 19

10.03.2014, 17:59:08 via Website

also im Falle eines Androidbetriebssystems haben wir ja nur einen Benutzer (lassen wir das Mehrbenutzerbetriebssystem mal beiseite ;) )

Dass das packages.xml neu erstellt wird nach oder vor dem Booten ist korrekt (habs gerade getestet)

hmmmm ich kann ja nicht einfach das Manifest der überwachten App manipulieren. Ist denke ich rechtlich nicht so in Ordnung :/

Ohje...

Antworten
impjor
  • Forum-Beiträge: 1.793

10.03.2014, 18:11:51 via Website

katuschi
also im Falle eines Androidbetriebssystems haben wir ja nur einen Benutzer (lassen wir das Mehrbenutzerbetriebssystem mal beiseite ;) )
Eben nicht: Jede App entspricht einem Linux-Benutzer-Account.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
katuschi
  • Forum-Beiträge: 19

10.03.2014, 18:18:22 via Website

Ohje... ist das dann wohl auch der Grund, warum ich nicht einfach CHMOD auf eine Datei anwenden kann?

jap, genau die mein ich Mac Systems, jedoch ist die für mein Vorhaben nicht ganz so relevant. (denke auch nicht, dass ich das auch noch berücksichtigen kann in der Kürze der Zeit)

Antworten
katuschi
  • Forum-Beiträge: 19

12.03.2014, 18:53:58 via Website

Melde mich noch einmal.

Habe eine Interessante App gefunden, die es schafft Apps ohne Root den Start zu verbieten.
Chico Broser heißt sie.
https://play.google.com/store/apps/details?id=com.chicobrowser

Am Anfang verlangt sie das Recht Geräteadministrator zu werden. Ist es durch den Schritt möglich, Apps am Starten zu hindern?

Ich steig einfach nicht durch, wie das möglich ist... (Magie oder doch Maggi? :D )

LG

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

13.03.2014, 15:12:57 via Website

Das liest sich sehr schwach was das APP kann

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
katuschi
  • Forum-Beiträge: 19

13.03.2014, 15:24:11 via Website

wie meinst das genau? Falls du den Chico Browser meinst, kann man mithilfe von ihm Applikationen deaktivieren und Seiten sperren, die in eine bestimmte Kategorie fallen (Gewalt, Waffen, Drogen, etc...) und auch bestimmte URLs.

Antworten