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

Aus k4cg.org
(füge beschreibung für cmd commando hinzu)
(Weiterleitung nach Event:2019/03/18 Android intern erstellt)
Markierung: Neue Weiterleitung
 
(2 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.
|-
| /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 [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.
|-
| /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 [https://android.googlesource.com/platform/frameworks/base/+/ebed7d6e35f7f960e6e6add2b8ab7c7a31a511c3/cmds heier] gefunden werden.
 
=== 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 neu startet.
|-
| <code>logcat -C</code>
| Farblicher output vom Systemlog
|-
| <code>bootanimation</code>
| Bootanimation anzeigen :P
|-
| <code>cmd package compile -m everything org.schabi.newpipe</code>
| Re compiliert die .odex Datei von NewPipe mit dem Compiler Filter everything
|-
| <code>cmd package list packages</code
| Zeigt alle installierten Packete an.
|-
| <code>cmd -l</code>
| 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 <code>cmd <interfacename></code> eine Hilfe davon was man damit tun kann.
|}
 
 
=== 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://f-droid.org/de/packages/dev.ukanth.ufirewall 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.
| <pre style="color: yellow">Benötigt Root</pre>
|-
| [https://f-droid.org/de/packages/org.adaway Adaway]
| Kann auf gerooteten geräten die Hosts Datei Überschreien. Damit lassen sich viele Tracker und viel Werbung blockieren.
| <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 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).
|<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://microg.org/ 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 [https://lineage.microg.org/ Preperierte Lineage] Version des Projekts dabei handelt
es sich um ganz normales Lineage welches von den Servern der Microg Leute noch mal modifiziert wurde.
|<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