Event:2019/02/18 Android intern: Unterschied zwischen den Versionen

Aus k4cg.org
(Fügt Infos meines Vortrags über Android bei.)
(Weiterleitung nach Event:2019/03/18 Android intern erstellt)
Markierung: Neue Weiterleitung
 
(7 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Datum:''' 18. Februar 2019
#WEITERLEITUNG [[Event:2019/03/18_Android_intern]]
 
'''Einlass:''' 19 Uhr
 
'''Beginn:''' 19:30 Uhr
 
'''Vortragende(r): [[Benutzer:Schabi|Schabi]]'''
 
=== Wichtige pfade ===
 
{| class="wikitable"
| /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 <code>/data/user/10</code> die
  App Heimverzeichnisse der Apps von Nutzer 10. Das Heimverzeichnis des Systemadministrators <code>/data/user/0</code>
  ist ein Symlink auf <code>/data/data</code>
|-
| /data/app
| Hier liegen die Executables bsp. die .apk Dateien der vom Nutzer installierten Apps.
|-
| /app/app/<app_name-base64foo>/oat/<cpu_architektur>/
| Hier liegt die binere ELF Datei welche mit dex2ota aus der app erstellt wurde (base.odex)
|-
| /app/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 [https://developer.android.com/ndk NDK]
entwickelt wurde (häufig bei Games). Es handelt sich dabei um .so Dateien die via [http://openbook.rheinwerk-verlag.de/java7/1507_21_001.html JNI] aufgerufen werden.
Hier liegen beispielsweise bei [https://visualstudio.microsoft.com/de/xamarin/ Xamarin] die .net vm, oder Qt die eigentliche app.
|}
 
=== Wichtige Programme ===
{| class="wikitable"
| [https://source.android.com/devices/tech/dalvik/configure /system/bin/dex2ota]
| Compiler welcher den android byte code in natieven byte code übersetzt
|-
| [https://elinux.org/Android_Dalvik_VM /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
|-
| [https://elinux.org/Android_Zygote_Startup /system/bin/app_process]
| app_process started die Android Runtime und läd Zygote. Welches als erste task den [https://android.googlesource.com/platform/frameworks/base/+/7d276c3/services/java/com/android/server/SystemServer.java SystemServer]
läd, welcher sich wiederum darum kümmert den Rest der Android Apps zu starten. Mit der letzten app den App Launcher.
|-
| /init             
| Android Init befehl
|-
| /system/bin/sm
| Disk managmenet.
|-
| /system/bin/svc
| Funk und USB managment.
|-
| /system/bin/bmgr
& /system/bin/bu
|-
| /system/bin/appops
| App Berechtigungen hinzufügen entziehen
|-
| /system/bin/logcat
| Zeigt systemlog an
|}
 
=== Nützliche Commandos ===
 
{| class="wikitable"
| <code>am start-activity org.schabi.newpipe/.MainActivity</code>
| Started NewPipe app.
|-
| <code>pm install some_app.apk</code>
| Installiert eine apk
|-
| <code>pm uninstall com.package.name</code>
| Deinstalliert ein packet
|-
| <code>pm create-user schabi</code>
| Erstellt neuen Nutzer mit dem Namen schabi
|-
| <code>pm remove-user 10</code>
| Löscht Nutzer mit der id 10
|-
| <code>svc wifi off</code>
| Schaltet Wifi ab
|-
| <code>kill main</code>
| tötet den Approcess und sorgt dafür das die android runtime neustartet.
|-
| <code>logcat -C</code>
| Farblicher output vom Systemlog
|-
| <code>bootanimation</code>
| Bootanimation anzeigen :P
|}
 
 
=== Wichtige Konfig Dateien ===
 
{| class="wikitable"
| /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.
|-
| [https://source.android.com/devices/architecture/vintf/objects#framework-manifest-file /system/manifest.xml]
| Framework manifest definiert System interfaces bsp für DisplayService und anderes.
|}
 
=== Nüzliche apps ===
{| class="wikitable"
| [https://f-droid.org Fdroid]
| Freies App repository für andorid. Funktioniert ähnlich wie typische packet repositories für Linux.
Enthält nur OpenSource/Freie Apps.
|<pre style="color: green">Kein Root</pre>
|-
| [https://f-droid.org/de/packages/com.termux/ Termux]
| Terminal app die ein eigenes apt repository mit bringt. Hiermit lassen sich
eine reihe nützlicher Linux Kommandos nachinstallieren
| <pre style="color: green">Kein Root</pre>
|-
| [https://search.f-droid.org/?q=xmouse&lang=de xmouse]
| Kann den Scotty fernsteuern.
|<pre style="color: green">Kein Root</pre>
|-
| [https://search.f-droid.org/?q=blokada&lang=de Blokada]
| DNS basierter Werbung und Tracking filter. Erlaubt auch einen anderen DNS Server ein zu stellen.
Verwendet die VPN Funktion von Android.
|<pre style="color: green">Kein Root</pre>
|-
| [https://f-droid.org/de/packages/exa.lnx.ae AnLinux]
| Installiert ein Glibc basiertes Linux Environment (bsp. Ubuntu) innerhab des Termux Environments.
|<pre style="color: green">Kein Root</pre>
|-
| [https://play.google.com/store/apps/details?id=x.org.server XSDL]
| X11 Server für Android
| <pre style="color: green">Kein Root</pre>
|-
| [https://f-droid.org/de/packages/ru.meefik.busybox/ busybox]
| Installiert Busybox und einige andere nützliche commandos in den /system/xbin ordner. Coole comandos sind unter
anderem strace oder ldd
| <pre style="color: yellow">Benötigt Root</pre>
|-
| [https://magiskmanager.com/ Magisk]
| Root tool das unter anderem Su hiding betreiben kann. D.h. Es versteckt su so, das andere 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).
|<pre style="color: red">Muss geflascht werden</pre>
|-
| [https://f-droid.org/de/packages/de.robv.android.xposed.installer 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.
|<pre style="color: red">Muss geflascht werden</pre>
|-
| [https://f-droid.org/de/packages/org.schabi.stethox/ 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.
|<pre style="color: yellow">Setzt xposed voraus</pre>
|-
| [https://anbox.io/ Anbox]
| Macht ein Ubuntu basiertes System Android kompartiebel, so das sich die meisten Android Apps darauf ausführen lassen (NewPipe nicht der scheiß).
|<pre style="color: green">Leuft eh nicht auf dem Smarthphone</pre>
|}

Aktuelle Version vom 20. März 2019, 11:13 Uhr