I\'m writing an app that will use su
to execute some commands in the linux kernel. I was wondering how SuperUser figures out that the application is asking for root
There are two parts to the superuser system - the superuser binary (su on the terminal) and the SuperUser.apk (Android app to manage apps using su). Looking at the source code of the su binary, when you request su access through
Process p = Runtime.getRuntime().exec("su");
it publishes an intent through the android messaging manager that an application has requested for superuser access.
sprintf(command, "/system/bin/am broadcast -a '%s' --es socket '%s' --ei caller_uid '%d' --ei allow '%d' --ei version_code '%d' > /dev/null",action, socket_path, ctx->from.uid, allow, VERSION_CODE);
The manager app listens for this intent and asks the user to handle the request (allow/deny).