Repository navigation
How it works
Hmn-Dev edited this page Sep 16, 2026
·
1 revision
The classic way for apps to do privileged things is running commands in a su shell (e.g. pm enable/disable). It has big downsides:
- Extremely slow — a new process per command.
- Unreliable — parsing human-readable text output.
- Limited to whatever commands exist.
- Needs root even when ADB permissions would be enough.
Android system APIs (like PackageManager#getInstalledPackages()) are IPC calls to the system server over binder. Binder lets the server side see the client's uid/pid and enforce permissions.
The trick Shizuku/Shevery uses:
- You start a Shizuku server process with root or ADB shell permissions.
- When any app starts, the server's binder is delivered to it (via
IActivityManager#registerProcessObserver+#registerUidObserver). - Shevery acts as a middleman: it receives the app's API requests, forwards them to the system server, and returns the results (see
transactRemoteinrikka.shizuku.server.ShizukuServiceandmoe.shizuku.api.ShizukuBinderWrapper).
To the app, calling a system API through Shevery is almost identical to calling it directly — but with elevated permissions.
-
ADB permissions are limited and differ per Android version. Check granted permissions in AOSP. Use
ShizukuService#getUid/#checkPermissionbefore calling APIs. - Hidden API restrictions (Android 9+): normal apps can't freely use hidden APIs; use e.g. AndroidHiddenApiBypass.
-
Android 8.0 + ADB: ADB can't use
registerUidObserveron API 26, so for processes not started by an Activity, trigger binder delivery by starting a transparent activity. -
transactRemotecodes differ per Android version (SystemServiceHelper.getTransactionCodemay miss, e.g.TRANSACTION_getInstalledPackages_47on API 25). PreferShizukuBinderWrapper. -
Android 17: Shevery ships an
Android17Compatfallback for changed signatures (e.g.grantRuntimePermission,getInstalledPackages).
Developer entry points: Shizuku-API + samples and the migration guide for pre-v11 apps.
Shevery is a free fork of Shizuku (Apache 2.0). Docs are community-maintained: repository · releases · Telegram