# Shizuku Privileged API {{#include ../../banners/hacktricks-training.md}} Shizuku je open-source servis koji **pokreće privilegovani Java proces koristeći `app_process`** i izlaže odabrane **Android sistemske API-je preko Bindera**. Pošto se proces pokreće sa istim **`shell` UID sposobnostima koje koristi ADB**, svaka aplikacija (ili terminal) koja se povezuje na izvezeni AIDL interfejs može izvršiti mnoge radnje koje obično zahtevaju **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, ulaz/izlaz fajlova unutar `/data`,** itd. – **bez root-ovanja uređaja**. Tipični slučajevi upotrebe: * Bezbednosno audiranje sa uređaja koji nije root-ovan * Uklanjanje bloatware-a / debloating sistemskih aplikacija * Prikupljanje logova, Wi-Fi ključeva, informacija o procesima i soketima za plavi tim/DFIR * Automatizacija konfiguracije uređaja iz prilagođenih aplikacija ili shell skripti --- ## 1. Pokretanje privilegovanog servisa `moe.shizuku.privileged.api` može se pokrenuti na tri različita načina – rezultantni Binder servis se ponaša isto u svim njima. ### 1.1 Bežični ADB (Android 11+) 1. Omogućite **Opcije za programere ➜ Bežično debagovanje** i uparite uređaj. 2. Unutar Shizuku aplikacije izaberite **“Start via Wireless debugging”** i kopirajte kod za uparivanje. 3. Servis opstaje do sledećeg ponovnog pokretanja (sesije bežičnog debagovanja se brišu pri pokretanju). ### 1.2 USB / lokalni ADB one-liner ```bash adb push start.sh \ /storage/emulated/0/Android/data/moe.shizuku.privileged.api/ # spawn the privileged process adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh ``` Isti skript se može izvršiti preko **network ADB** veze (`adb connect :5555`). ### 1.3 Rootovani uređaji Ako je uređaj već rootovan, pokrenite: ```bash su -c sh /data/adb/shizuku/start.sh ``` ### 1.4 Proveravanje da li radi ```bash adb shell dumpsys activity service moe.shizuku.privileged.api | head ``` Uspešan početak vraća `Running services (1)` zajedno sa PID-om privilegovanog procesa. --- ## 2. Povezivanje iz aplikacije Aplikacije trećih strana samo trebaju sledeće unutar svog `AndroidManifest.xml`: ```xml ``` U vreme izvršavanja dobijaju binder: ```java IBinder binder = ShizukuProvider.getBinder(); IPackageManager pm = IPackageManager.Stub.asInterface(binder); ``` Od ovog trenutka aplikacija može pozvati bilo koju metodu koju **`shell` korisnik** može pozvati – na primer : ```java pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null); Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1); ``` Kustoska lista od više od **170 aplikacija koje podržavaju Shizuku** se održava na [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku). --- ## 3. Rish – povišeni shell unutar Termux-a Ekran podešavanja Shizuku otkriva **“Koristi Shizuku u terminalnim aplikacijama”**. Aktiviranje ove opcije preuzima *rish* (`/data/local/tmp/rish`). ```bash pkg install wget wget https://rikka.app/rish/latest -O rish && chmod +x rish # start elevated shell (inherits the binder connection) ./rish whoami # ➜ shell id # uid=2000(shell) gid=2000(shell) groups=... context=u:r:shell:s0 ``` ### 3.1 Korisne komande iz rish shell-a * Prikazivanje pokrenutih procesa datog paketa: ```bash ps -A | grep com.facebook.katana ``` * Nabrajanje slušajućih soketa i mapiranje na pakete (npr. **CVE-2019-6447 ES File Explorer**): ```bash netstat -tuln for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)"; done ``` * Ispisivanje logova svake aplikacije: ```bash logcat -d | grep -iE "(error|exception)" ``` * Čitanje sačuvanih Wi-Fi kredencijala (Android 11 +): ```bash cat /data/misc/wifi/WifiConfigStore.xml | grep -i "" ``` * Masovno uklanjanje (primer): ```bash pm uninstall --user 0 com.miui.weather2 ``` --- ## 4. Bezbednosna razmatranja / detekcija 1. Shizuku zahteva **ADB debugging** privilegije, stoga _Developer Options → USB/Wireless debugging_ mora biti **omogućeno**. Organizacije mogu blokirati ovo putem MDM-a ili putem `settings put global development_settings_enabled 0`. 2. Usluga se registruje pod imenom `moe.shizuku.privileged.api`. Jednostavna `adb shell service list | grep shizuku` (ili pravilo Endpoint Security) detektuje njeno prisustvo. 3. Mogućnosti su ograničene na ono što korisnik `shell` već može da uradi – **nije root**. Osetljivi API-ji koji zahtevaju korisnika `system` ili `root` su i dalje nedostupni. 4. Sesije **ne preživljavaju restart** osim ako uređaj nije root-ovan i Shizuku je konfigurisan kao daemon pri pokretanju. --- ## 5. Ublažavanje * Onemogućiti USB/Wireless debugging na proizvodnim uređajima. * Pratiti Binder usluge koje izlažu `moe.shizuku.privileged.api`. * Koristiti SELinux politike (Android enterprise) za blokiranje AIDL interfejsa iz neuredjenih aplikacija. --- ## Reference - [Blog – Shizuku: Otključavanje naprednih Android mogućnosti bez root-a](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/) - [Shizuku zvanična dokumentacija](https://shizuku.rikka.app/) - [awesome-shizuku – lista podržanih aplikacija](https://github.com/timschneeb/awesome-shizuku) - [rish shell (privilegovan reverse-adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md) {{#include ../../banners/hacktricks-training.md}}