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
640fb546d2
commit
0eea09b2da
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1) temel alınarak
|
[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1) temel alınarak
|
||||||
|
|
||||||
**\_exit()**_ fonksiyonunu **hook'layın** ve **şifre çözme fonksiyonu** böylece frida konsolunda flag'i yazdıracak şekilde ayarlayın, doğrula butonuna bastığınızda:
|
**_exit()**_ fonksiyonunu ve **şifre çözme fonksiyonunu** yakalayın, böylece doğrula butonuna bastığınızda frida konsolunda bayrağı yazdırır:
|
||||||
```javascript
|
```javascript
|
||||||
Java.perform(function () {
|
Java.perform(function () {
|
||||||
send("Starting hooks OWASP uncrackable1...")
|
send("Starting hooks OWASP uncrackable1...")
|
||||||
@ -55,7 +55,7 @@ send("Hooks installed.")
|
|||||||
|
|
||||||
Based in [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
Based in [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
||||||
|
|
||||||
**Root kontrolünü takla** ve şifre çözme fonksiyonunu, doğrula butonuna bastığınızda frida konsolunda bayrağı yazdıracak şekilde ayarlayın:
|
**Hook rootchecks** ve şifre çözme fonksiyonunu, verify butonuna bastığınızda frida konsolunda flag'i yazdıracak şekilde ayarlayın:
|
||||||
```javascript
|
```javascript
|
||||||
Java.perform(function () {
|
Java.perform(function () {
|
||||||
send("Starting hooks OWASP uncrackable1...")
|
send("Starting hooks OWASP uncrackable1...")
|
||||||
@ -115,4 +115,52 @@ return false
|
|||||||
send("Hooks installed.")
|
send("Hooks installed.")
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
---
|
||||||
|
|
||||||
|
## Çözüm 3 – `frida-trace` (Frida ≥ 16)
|
||||||
|
|
||||||
|
Eğer hook'ları elle yazmak istemiyorsanız, **Frida**'nın sizin için Java stub'larını oluşturmasına izin verebilir ve ardından bunları düzenleyebilirsiniz:
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
Frida 16+ ile oluşturulan stub, modern **ES6** şablon sözdizimini zaten kullanır ve yerleşik *QuickJS* çalışma zamanı ile derlenecektir – artık `frida-compile`'a ihtiyacınız yok.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Çözüm 4 – Objection ile Tek Satırlık (2024)
|
||||||
|
|
||||||
|
Eğer **Objection >1.12** yüklüyse, bayrağı tek bir komutla dökebilirsiniz (Objection, Frida'yı dahili olarak sarar):
|
||||||
|
```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` AES rutininden dönen düz metni yazdırır
|
||||||
|
* `set return_value false` her root / debugger kontrolünün *false* bildirmesini zorlar
|
||||||
|
* `invoke` yöntemi doğrudan **Verify** butonuna basmadan çağırmanıza olanak tanır.
|
||||||
|
|
||||||
|
> NOT: Android 14 (API 34) üzerinde Objection/Frida'yı *spawn* modunda (`-f`) çalıştırmalısınız çünkü *attach* Ekim 2024'te tanıtılan **seccomp-bpf** kısıtlamaları tarafından engellenmiştir.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Modern Android notları (2023 - 2025)
|
||||||
|
|
||||||
|
* **libsu 5.x** ve **Zygisk** *su*'yu oldukça iyi gizler; ancak Seviye 1'deki Java tabanlı kontroller, `/system/bin/su` dosyası mevcutsa hala başarısız olur. **denylist**'i etkinleştirdiğinizden emin olun veya basitçe `java.io.File.exists()`'i Frida ile hooklayın.
|
||||||
|
* Frida 16.1, Google’ın *Scudo* allocator'ından kaynaklanan **Android 12/13** üzerindeki bir çöküşü düzeltti. `Abort message: 'missing SHADOW_OFFSET'` görüyorsanız, Frida'yı güncelleyin (veya önceden derlenmiş 17.0 gece sürümünü kullanın).
|
||||||
|
* Play Integrity, 2023'te SafetyNet'in yerini aldığından, bazı yeni uygulamalar **com.google.android.gms.tasks.Task** API'sini çağırır. Seviye 1 bunu yapmaz, ancak burada gösterilen aynı hooklama stratejisi çalışır – `com.google.android.gms.safetynet.SafetyNetClient`'i hooklayın ve sahte bir *EvaluationType* döndürün.
|
||||||
|
|
||||||
|
## Referanslar
|
||||||
|
|
||||||
|
* Frida sürüm duyurusu – "Frida 16.0 (2023-04-02): Android 12/13 güvenilirlik düzeltmeleri & spawn API revizyonu"
|
||||||
|
* Objection 1.12 – "Sadece spawn modu için Android 14" (BlackHat USA 2024 konuşma slaytları)
|
||||||
|
|
||||||
{{#include ../../../banners/hacktricks-training.md}}
|
{{#include ../../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user