Skip to content

Instantly share code, notes, and snippets.

@apkunpacker
Forked from MhmRdd/shizuku_starter.c
Created March 8, 2026 18:07
Show Gist options
  • Select an option

  • Save apkunpacker/0dc3633b440cd8f144c199dcc74926d7 to your computer and use it in GitHub Desktop.

Select an option

Save apkunpacker/0dc3633b440cd8f144c199dcc74926d7 to your computer and use it in GitHub Desktop.
/*
* shizuku_starter.c
*
* Starts Shizuku server with root privileges.
* Intended to be executed via Xiaomi IMQSNative service.
*
*
* Compile (Termux):
* clang -O2 -Wall -o /data/local/tmp/shizuku_starter shizuku_starter.c
*
* Compile (NDK):
* $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang \
* -O2 -Wall -o /data/local/tmp/shizuku_starter shizuku_starter.c
*/
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main() {
if (setgid(0) != 0) perror("setgid");
if (setuid(0) != 0) perror("setuid");
setenv("BOOTCLASSPATH", "/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/framework-graphics.jar:/system/framework/framework-location.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar:/system_ext/framework/miui-framework.jar:/system_ext/framework/miui-telephony-common.jar:/system_ext/framework/miui-enterprise-sdk.jar:/system_ext/framework/miui-framework-pointer-pad.jar:/system_ext/framework/vendor.xiaomi.hardware.videoservice-V3-java.jar:/apex/com.android.i18n/javalib/core-icu4j.jar:/apex/com.android.adservices/javalib/framework-adservices.jar:/apex/com.android.adservices/javalib/framework-sdksandbox.jar:/apex/com.android.appsearch/javalib/framework-appsearch.jar:/apex/com.android.btservices/javalib/framework-bluetooth.jar:/apex/com.android.configinfrastructure/javalib/framework-configinfrastructure.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.devicelock/javalib/framework-devicelock.jar:/apex/com.android.healthfitness/javalib/framework-healthfitness.jar:/apex/com.android.ipsec/javalib/android.net.ipsec.ike.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.mediaprovider/javalib/framework-pdf.jar:/apex/com.android.mediaprovider/javalib/framework-pdf-v.jar:/apex/com.android.mediaprovider/javalib/framework-photopicker.jar:/apex/com.android.nfcservices/javalib/framework-nfc.jar:/apex/com.android.ondevicepersonalization/javalib/framework-ondevicepersonalization.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.permission/javalib/framework-permission-s.jar:/apex/com.android.profiling/javalib/framework-profiling.jar:/apex/com.android.scheduling/javalib/framework-scheduling.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.tethering/javalib/framework-connectivity.jar:/apex/com.android.tethering/javalib/framework-connectivity-t.jar:/apex/com.android.tethering/javalib/framework-tethering.jar:/apex/com.android.uwb/javalib/framework-uwb.jar:/apex/com.android.virt/javalib/framework-virtualization.jar:/apex/com.android.wifi/javalib/framework-wifi.jar", 1);
setenv("DEX2OATBOOTCLASSPATH", "/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/framework-graphics.jar:/system/framework/framework-location.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/tcmiface.jar:/system/framework/telephony-ext.jar:/system/framework/QPerformance.jar:/system/framework/UxPerformance.jar:/system/framework/WfdCommon.jar:/system_ext/framework/miui-framework.jar:/system_ext/framework/miui-telephony-common.jar:/system_ext/framework/miui-enterprise-sdk.jar:/system_ext/framework/miui-framework-pointer-pad.jar:/system_ext/framework/vendor.xiaomi.hardware.videoservice-V3-java.jar:/apex/com.android.i18n/javalib/core-icu4j.jar", 1);
FILE *fp = popen("pm path moe.shizuku.privileged.api", "r");
if (!fp) return 1;
char line[512];
fgets(line, sizeof(line), fp);
pclose(fp);
char *apk = strstr(line, "package:");
if (apk) apk += 8;
apk[strcspn(apk, "\n")] = 0;
char dir[512];
strcpy(dir, apk);
char *p = strrchr(dir, '/');
if (p) *p = 0;
char libpath[600];
snprintf(libpath, sizeof(libpath),
"%s/lib/arm64/libshizuku.so", dir);
execl(libpath, "libshizuku.so", NULL);
perror("execl failed");
return 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment