mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/frida-tutorial
This commit is contained in:
parent
7359c99e8b
commit
d772cc65d9
@ -12,7 +12,7 @@
|
||||
|
||||
Oparte na [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
||||
|
||||
**Hookuj funkcję \_exit()**\_ i **funkcję deszyfrującą**, aby wydrukować flagę w konsoli frida, gdy naciśniesz weryfikację:
|
||||
**Zaczep funkcję _exit()** i **funkcję deszyfrującą**, aby wydrukować flagę w konsoli frida, gdy naciśniesz weryfikację:
|
||||
```javascript
|
||||
Java.perform(function () {
|
||||
send("Starting hooks OWASP uncrackable1...")
|
||||
@ -115,4 +115,54 @@ return false
|
||||
send("Hooks installed.")
|
||||
})
|
||||
```
|
||||
---
|
||||
|
||||
## Rozwiązanie 3 – `frida-trace` (Frida ≥ 16)
|
||||
|
||||
Jeśli nie chcesz ręcznie pisać hooków, możesz pozwolić **Frida** wygenerować dla Ciebie szkielet Java, a następnie je edytować:
|
||||
```bash
|
||||
# Spawn the application and automatically trace the Java method we care about
|
||||
aadb shell "am force-stop owasp.mstg.uncrackable1"
|
||||
frida-trace -U -f owasp.mstg.uncrackable1 \
|
||||
-j 'sg.vantagepoint.a.a.a("[B","[B")[B' \
|
||||
-j 'sg.vantagepoint.a.c!*' \
|
||||
--output ./trace
|
||||
|
||||
# The first run will create ./trace/scripts/sg/vantagepoint/a/a/a__B_B_B.js
|
||||
# Edit that file and add the logic that prints the decrypted flag or
|
||||
# returns a constant for the root-checks, then:
|
||||
frida -U -f owasp.mstg.uncrackable1 -l ./trace/_loader.js --no-pause
|
||||
```
|
||||
Z Frida 16+ generowany stub już używa nowoczesnej składni **ES6** i będzie kompilowany z wbudowanym *QuickJS* runtime – nie musisz już używać `frida-compile`.
|
||||
|
||||
---
|
||||
|
||||
## Rozwiązanie 4 – Jedna linia z Objection (2024)
|
||||
|
||||
Jeśli masz zainstalowane **Objection >1.12**, możesz zrzucić flagę za pomocą jednego polecenia (Objection wewnętrznie opakowuje Frida):
|
||||
```bash
|
||||
objection -g owasp.mstg.uncrackable1 explore \
|
||||
--startup-command "android hooking watch class sg.vantagepoint.a.a method a \n && android hooking set return_value false sg.vantagepoint.a.c * \n && android hooking invoke sg.vantagepoint.a.a a '[B' '[B'"
|
||||
```
|
||||
* `watch class` drukuje tekst zwrócony przez rutynę AES
|
||||
* `set return_value false` zmusza każdą kontrolę root / debuggera do zgłaszania *false*
|
||||
* `invoke` pozwala na bezpośrednie wywołanie metody bez naciskania **Verify**.
|
||||
|
||||
> UWAGA: W Androidzie 14 (API 34) musisz uruchomić Objection/Frida w trybie *spawn* (`-f`), ponieważ *attach* jest zablokowane przez ograniczenia **seccomp-bpf** wprowadzone w październiku 2024.
|
||||
|
||||
---
|
||||
|
||||
## Nowoczesne notatki Androida (2023 - 2025)
|
||||
|
||||
* **libsu 5.x** i **Zygisk** dobrze ukrywają *su*; jednak kontrole oparte na Javie w Poziomie 1 nadal zawodzą, jeśli plik `/system/bin/su` istnieje. Upewnij się, że włączono **denylist** lub po prostu podłącz `java.io.File.exists()` za pomocą Frida.
|
||||
* Frida 16.1 naprawiła awarię w **Android 12/13** spowodowaną alokatorami *Scudo* firmy Google. Jeśli zobaczysz `Abort message: 'missing SHADOW_OFFSET'`, zaktualizuj Frida (lub użyj wstępnie zbudowanej wersji 17.0 nightly).
|
||||
* Ponieważ Play Integrity zastąpiło SafetyNet w 2023 roku, niektóre nowsze aplikacje wywołują API **com.google.android.gms.tasks.Task**. Poziom 1 tego nie robi, ale ta sama strategia podłączania pokazana tutaj działa – podłącz `com.google.android.gms.safetynet.SafetyNetClient` i zwróć sfałszowany *EvaluationType*.
|
||||
|
||||
## Referencje
|
||||
|
||||
* Ogłoszenie wydania Frida – "Frida 16.0 (2023-04-02): poprawki niezawodności Androida 12/13 i przegląd API spawn"
|
||||
* Objection 1.12 – "Tryb tylko spawn dla Androida 14" (slajdy z prezentacji BlackHat USA 2024)
|
||||
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user