Event:2019/02/18 Android intern
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/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 |
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 |
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 |