Event:2019/03/18 Android intern

Aus k4cg.org
Wechseln zu: Navigation, Suche

Datum: 18. Februar 2019

Einlass: 19 Uhr

Beginn: 19:30 Uhr

Vortragende(r): Schabi

Wichtige pfade

/system System Verzeichnis (read only), hier liegen alle Android wichtigen System Dateien.
/vendor Ähnlich wie /system, allerdings liegen hier die Phone/Hersteller abhängigen System Dateien.
/data Hier liegen alle für die Benutzung wichtigen Dateien bsp. Apps und deren Heimverzeichnisse.
/firmware Hier liegt die Firmware des Smartphones
/storage Hier sind die externen Sotrages eingebunden.
/storage/emulated/0 Hier liegt der interne frei verwendbare speicher des 0ten Android Benutzers.
/storage/4829-2848 In diesem Verzeichnis ist die echte SD-Karte gemountet (nummern des Verzeichnis Namens nur ein Beispiel.
/system/bin Hier liegen die für android wichtigen Programme so wie befehle. Bsp. der dex2ota compiler
/system/xbin Hier liegen auf gerooteten Phones custom befehle. Bsp. Bussybox.
/system/app Hier liegen die von der Android rom mitgelieferten apps.
/system/priv-app Steht für Priviliged apps. Hier liegen Apps die erhöhte rechte haben. Zwar kein root, aber sie dürfen bsp im Hintergrund Apps installieren etc.
/system/media Hier liegen die System Klingeltöne der Bootscreen und weiteres.
/system/framework Hier liegen die .jar Dateien welchen bim Compilen durch dex2ota mit in die App eingebaut werden. (Hier liegt bsp. der App teil von Xposed oder den GSM services
/data/data Hier liegen die Heimverzeichnisse der einzelnen Apps des System Administrators (user 0).
/data/user/ Hier liegen die Heimverzeichnisse der Apps für jeden Android Nutzer. So liegen unter /data/user/10 die

App Heimverzeichnisse der Apps von Nutzer 10. Das Heimverzeichnis des Systemadministrators /data/user/0 ist ein Symlink auf /data/data

/data/app Hier liegen die Executables bsp. die .apk Dateien der vom Nutzer installierten Apps.
/data/app/<app_name-base64foo>/oat/<cpu_architektur>/ Hier liegt die binere ELF Datei welche mit dex2ota aus der app erstellt wurde (base.odex)
/data/app/<app_name-base64foo>/lib/<cpu_architektur>/ Hier liegt der native teil einer app, wenn diese nicht nur in Java sondern auch in C++ mit Hilfe der Android NDK

entwickelt wurde (häufig bei Games). Es handelt sich dabei um .so Dateien die via JNI aufgerufen werden. Hier liegen beispielsweise bei Xamarin die .net vm, oder Qt die eigentliche app.

Wichtige Programme

/system/bin/dex2ota Compiler welcher den android byte code in natieven byte code übersetzt
/system/bin/dalivkvm Dalivk vm die den android byte code (.dex) direkt ausführen kann
/system/bin/pm Android Packetmanager, zum de-/installieren von Apps und anlegen/löschen von android Nutzern
/system/bin/am Android Manager, zum starten von apps, oder um Nachrichten (Intends) an diese zu senden
/system/bin/app_process app_process started die Android Runtime und läd Zygote. Welches als erste task den SystemServer

läd, welcher sich wiederum darum kümmert den Rest der Android Apps zu starten.

/init Android Init befehl
/system/bin/sm Disk managmenet.
/system/bin/svc Funk und USB managment.
/system/bin/bmgr

& /system/bin/bu

Android backup manager
/system/bin/appops App Berechtigungen hinzufügen entziehen
/system/bin/logcat Zeigt systemlog an
/system/bin/cmd Schweizer Taschenmesser für Komandozeilen Benutzung.

Weiter Programme können heier gefunden werden.

Nützliche Commandos

am start-activity org.schabi.newpipe/.MainActivity Started NewPipe app.
pm install some_app.apk Installiert eine apk
pm uninstall com.package.name Deinstalliert ein packet
pm create-user schabi Erstellt neuen Nutzer mit dem Namen schabi
pm remove-user 10 Löscht Nutzer mit der id 10
svc wifi off Schaltet Wifi ab
kill main tötet den Approcess und sorgt dafür das die Android Runtime neu startet.
logcat -C Farblicher output vom Systemlog
bootanimation Bootanimation anzeigen :P
cmd package compile -m everything org.schabi.newpipe Re compiliert die .odex Datei von NewPipe mit dem Compiler Filter everything
cmd package list packages</code Zeigt alle installierten Packete an.
cmd -l Zeigt eine liste an Kommandos für verschiedene Interfaces an, auf die cmd befehle absetzen kann.

Leider können nicht alle diese Interfaces verwendet werden, da cmd bei den meisten anzeigt, das keine Kommandozeilen Implementierung dafür existiert. Durch komplexes Kommandozeilen getue, und krasses gehacke habe ich allerdings diese Liste an funktionierende Interfaces gefunden auf die cmd funktioniert:

activity
appops
autofill
battery
deviceidle
devicestoragemonitor
gpu
input
jobscheduler
netpolicy
notification
otadexopt
overlay
package
power
settings
shortcut
statusbar
uimode
user
vibrator
webviewupdate
wifi

Tippt man cmd <interfacename> eine Hilfe davon was man damit tun kann.


Wichtige Konfig Dateien

/system/build.prop Datei in der die Build configuration des Systems steht.

Ändert man diese kann man z.b. die virtuelle Navigationsleiste ein und ausschalten.

/init.rc Die Init datei die vom /init prozess als erstes aufgerufen wird. Diese Datei

Interludien im Anschluss alle anderen Datei.

/etc/init Hier liegen die meisten anderen init scripte die von /init.rc inkludiert werden
/data/data/<app_name>/shared_prefs Hier liegen die xml Datein der app Einstellungen.
/system/manifest.xml Framework manifest definiert System interfaces bsp für DisplayService und anderes.

Nüzliche apps

Fdroid Freies App repository für andorid. Funktioniert ähnlich wie typische packet repositories für Linux.

Enthält nur OpenSource/Freie Apps.

Kein Root
Termux Terminal app die ein eigenes apt repository mit bringt. Hiermit lassen sich

eine reihe nützlicher Linux Kommandos nachinstallieren

Kein Root
xmouse Kann den Scotty fernsteuern.
Kein Root
Blokada DNS basierter Werbung und Tracking filter. Erlaubt auch einen anderen DNS Server ein zu stellen.

Verwendet die VPN Funktion von Android.

Kein Root
AnLinux Installiert ein Glibc basiertes Linux Environment (bsp. Ubuntu) innerhab des Termux Environments.
Kein Root
XSDL X11 Server für Android
Kein Root
Virtual Xposed Started ein Virtuelles App environment in dem Apps installiert werden können (ja das ist eine app in der apps laufen).

Auf die in diesem environment laufenden apps kann nun Xposed angewendet werden, obwohl das phone nicht gerootet ist. ACHTUNG!!! Die App ist nicht vollkommen frei, und enthält leider einige Tracker. Ich habe sie noch nicht Trackerfrei compiliert bekommen :/

Kein Root
busybox Installiert Busybox und einige andere nützliche commandos in den /system/xbin ordner. Coole comandos sind unter

anderem strace oder ldd

Benötigt Root
AFWall+ UI Frontend für IP tables. Damit lassen sich auf gerooteten Geräten Netzwerk Berechtigungen oder der Default DNS für das Mobielfunknetz

setzen.

Benötigt Root
Adaway Kann auf gerooteten geräten die Hosts Datei Überschreien. Damit lassen sich viele Tracker und viel Werbung blockieren.
Benötigt Root
Magisk Root tool das unter anderem Su hiding betreiben kann. D.h. Es versteckt su so, das ausgewählte Apps glauben das kein

root auf dem System existiert. (Ist die bei meinem Vortrag semtliche .so und .jar Datein gemountet hat :P, aber keine Angst die app ist open source).

Muss geflascht werden
XPosed Kann via Java Reflection das verhalten von Apps zur laufzeit ändern. Somit lassen sich mods für Apps oder dem System installieren.

Xposed Ist ein framework das sich unter anderem in den /system/framework Ordner installiert.

Muss geflascht werden
Stethox Xposed Module welches ich geschrieben hab. Damit lässt sich reverse enginering auf allen installierten apps anwenden.

VORSICHT! bitte nicht auf dem alltags Gerät benutzen. Reist reisen Sicherheitslücke ins System.

Setzt xposed voraus
microg Freie alternative zu den Google play services. Setzt entweder Xposed voraus, kann aber auch mit Tingle installiert werden. Wenn das

Gerät allerdings Lineage unterstützt empfehle ich die Preperierte Lineage Version des Projekts dabei handelt es sich um ganz normales Lineage welches von den Servern der Microg Leute noch mal modifiziert wurde.

Setzt xposed voraus
Anbox Macht ein Ubuntu basiertes System Android kompartiebel, so das sich die meisten Android Apps darauf ausführen lassen (NewPipe nicht der scheiß).
Leuft eh nicht auf dem Smarthphone