Translated ['src/mobile-pentesting/android-app-pentesting/frida-tutorial

This commit is contained in:
Translator 2025-08-19 13:20:57 +00:00
parent 049c7b86ef
commit 33c0a1156d

View File

@ -12,7 +12,7 @@
Zasnovano na [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
**Hook the \_exit()**\_ funkciju i **decrypt function** tako da ispisuje flag u frida konzoli kada pritisnete verify:
**Hook the _exit()**_ funkciju i **decrypt function** tako da ispisuje flag u frida konzoli kada pritisnete verify:
```javascript
Java.perform(function () {
send("Starting hooks OWASP uncrackable1...")
@ -53,9 +53,9 @@ send("Hooks installed.")
```
## Rešenje 2
Na osnovu [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
Bazirano na [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
**Hook-ujte rootchecks** i dekriptujte funkciju tako da ispisuje flag u frida konzoli kada pritisnete verify:
**Hook rootchecks** i dekriptuje funkciju tako da ispisuje zastavicu u frida konzoli kada pritisnete verifikaciju:
```javascript
Java.perform(function () {
send("Starting hooks OWASP uncrackable1...")
@ -115,4 +115,52 @@ return false
send("Hooks installed.")
})
```
---
## Rešenje 3 `frida-trace` (Frida ≥ 16)
Ako ne želite da ručno pišete hook-ove, možete dozvoliti **Frida** da generiše Java stubove za vas, a zatim ih izmenite:
```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
```
Sa Frida 16+ generisani stub već koristi modernu **ES6** sintaksu i kompajlira se sa ugrađenim *QuickJS* runtime-om više vam nije potreban `frida-compile`.
---
## Rešenje 4 Jedna linija sa Objection (2024)
Ako imate instaliran **Objection >1.12** možete izvući flag sa jednom komandom (Objection obavija Frida interno):
```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` štampa plaintext koji vraća AES rutina
* `set return_value false` prisiljava svaku proveru root / debugggera da prijavi *false*
* `invoke` vam omogućava da pozovete metodu direktno bez pritiska na **Verify**.
> NAPOMENA: Na Androidu 14 (API 34) morate pokrenuti Objection/Frida u *spawn* režimu (`-f`) jer je *attach* blokiran **seccomp-bpf** ograničenjima uvedenim u oktobru 2024.
---
## Moderni Android beleške (2023 - 2025)
* **libsu 5.x** i **Zygisk** dobro skrivaju *su*; međutim, Java zasnovane provere u Nivou 1 i dalje ne uspevaju ako datoteka `/system/bin/su` postoji. Uverite se da omogućite **denylist** ili jednostavno hook-ujte `java.io.File.exists()` sa Frida.
* Frida 16.1 je ispravila pad na **Android 12/13** uzrokovan Google-ovim *Scudo* alokatorom. Ako vidite `Abort message: 'missing SHADOW_OFFSET'`, nadogradite Frida (ili koristite unapred izgrađenu 17.0 nightly).
* Pošto je Play Integrity zamenio SafetyNet 2023. godine, neke novije aplikacije pozivaju **com.google.android.gms.tasks.Task** API. Nivo 1 to NE radi, ali ista strategija hook-ovanja prikazana ovde funkcioniše hook-ujte `com.google.android.gms.safetynet.SafetyNetClient` i vratite lažirani *EvaluationType*.
## Reference
* Frida objava verzije "Frida 16.0 (2023-04-02): ispravke pouzdanosti za Android 12/13 & prepravka spawn API"
* Objection 1.12 "Samo spawn režim za Android 14" (BlackHat USA 2024 prezentacione slajdove)
{{#include ../../../banners/hacktricks-training.md}}