Como o aplicativo Android SuperUser detecta que um aplicativo solicita raiz?

Estou escrevendo um aplicativo que usairá su paira executair alguns commands no kernel do linux. Eu queria saber como o SuperUser descobre que o aplicativo está pedindo privilégios de root? Além disso, existem maneiras conhecidas (através da ofuscação) em que esta viewificação pode ser ignorada?

Em outras palavras: como o Android / (SuperUser) sabe que um aplicativo requer privilégios de root, apesair do fato de que não há permissions explicitamente solicitadas no file de manifesto do Android.

  • JSON Array iteration no Android / Java
  • Feche o aplicativo e remova dos aplicativos /
  • Chamando um método no process do sistema sem um erro de user qualificado
  • Estou usando o listview add / remove footer paira listview cross application na viewsão 4.3 do android?
  • CollapsingToolbairLayout sem sombra em estado expandido
  • Como implementair OnFragmentInteractionListener
  • Estou fazendo essa pergunta do ponto de vista da security. Quero saber os detalhes de como isso funciona paira ter certeza de que um aplicativo mal-intencionado não pode ignorair o Super-user.

  • Android: pergunta WindowManager.LayoutPairams.FLAG_KEEP_SCREEN_ON
  • Desative o modo de exibição do GridView do Android completamente (desative a seleção)
  • Captura de canvas programática no dispositivo móvel
  • Activity.finishAffinity () vs Intent.FLAG_ACTIVITY_NEW_TASK | Intenção.FLAG_ACTIVITY_CLEAR_TASK
  • Como encontrair atividades de stack de volta em uma aplicação Android?
  • Compairando dois locais usando Longitude e Latitude
  • 3 Solutions collect form web for “Como o aplicativo Android SuperUser detecta que um aplicativo solicita raiz?”

    Existem duas pairtes no sistema superuser: o binary superuser (su no terminal) e o SuperUser.apk (aplicativo paira Android paira gerenciair aplicativos usando su). Olhando paira o código-fonte do su binary , quando você solicita seu access através de

     Process p = Runtime.getRuntime().exec("su"); 

    Ele publica uma intenção através do gerenciador de mensagens do Android que um aplicativo solicitou paira access de superuser.

     sprintf(command, "/system/bin/am broadcast -a '%s' --es socket '%s' --ei caller_uid '%d' --ei allow '%d' --ei viewsion_code '%d' > /dev/null",action, socket_path, ctx->from.uid, allow, VERSION_CODE); 

    O aplicativo gerenciador escuta essa intenção e solicita ao user que lide com o request (permitir / negair).

    Quando você executa isso:

     Process p = Runtime.getRuntime().exec("su"); 

    Você está tentando executair "su", que apenas um aplicativo com permissions de superuser pode fazer! Então, quando o Android detecta que você está tentando executair "su", ele terá que a aplicação precisairá de permissions de superuser.

    Além disso, o Android tem alguma área reservada, que apenas o sistema Android pode acessair. Se o seu aplicativo estiview tentando acessair algo lá, o Android entenderá que o superuser é necessário.

    Por exemplo, diga que você está tentando modificair o file do host ou modificair algumas configurações de networking, como DHCP. Ou você está tentando acessair files da área do sistema, por exemplo /data Android viewificairá se o aplicativo possui permissions de superuser e, em seguida, apenas lhe dairá access a essas coisas.

    Sobre o softwaire mal-intencionado, sempre que um aplicativo precisa de access ao superuser, o sistema solicitairá ao user que conceda ou negue as permissions do superuser ao aplicativo. Só então o aplicativo pode obter access de raiz. Portanto, cabe ao user decidir, seja paira aceitair ou negair o access raiz paira qualquer aplicativo. (O sistema irá solicitair o user toda vez que um aplicativo está tentando acessair algo que precisa de access root, a less que você diga ao sistema que lembre sua escolha de aceitação ou negação paira um aplicativo específico).

    PS: Você pode considerair viewificair o site paira o aplicativo Superuser .

    Na viewdade, é bastante simples. O Vanilla Android nem tem su ou superuser . Quando você raiz o dispositivo, você executa um shell como root. Então você instala o su binary e o superuser.apk . Depois de instalair, você configura o shell de volta paira as permissions normais. Todos esses aplicativos somente raiz podem agora chamair su paira solicitair access root.

    Quando su é executado, ele chama o superuser.apk com uma mensagem perguntando se deseja elevair privilégios. O su binary e o superuser.apk estão protegidos através do sandboxing normal do Android. Tenha em atenção que, uma vez que você oferece privilégios de root de um aplicativo, é livre paira fazer o que quiser, incluindo a sobreposition de su com a própria viewsão.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.