Android定制系统里如何让APP可以有root权限

     在基于Android系统的嵌入式设备中,发布软件大多使用user的版本,也有一些产品直接释放eng的版本,里面内置了su,用户可以轻松获得root权限,当然这种风险还是比较大的,系统容易被破坏。 在使用user模式的版本上,一般都不会让用户能够切换到root权限,有些直接就不把su给building进去。在有些时候,我们又可能有这种需求,要让app拿到root权限去做一些事情,那怎么办呢? 我们可以copy模仿一个来解决,具体如下:

     第一步:在定制系统里system/extra/su的代码拷贝一份,代码完全一样,就把名称换一下,比如suspecial,这样build出来的可执行文件也是个私有的名称,其他第三方APP应该是不知道的了,相对比较安全。

     第二步: 因为是直接使用su的代码,在android设计上,只有UID是AID_ROOT跟AID_SHELL的可以正常执行,所以这一块代码也是要注释掉的,否则上层app是拿不到的。

/*****************************************************************************************************/
声明:本博内容均由http://blog.csdn.net/edsam49原创,转载请注明出处,谢谢!
/*****************************************************************************************************/

   uid_t current_uid = getuid();
	printf("current_uid = %d\n", current_uid);
  /*  if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");*/

    第三步:要在文件系统里设置好suspecial的权限,否则都是自己是root,shell是同组,在android7.1SDK里面是在system\core\libcutils fs-config.c中,修改如下:

Android定制系统里如何让APP可以有root权限_第1张图片

前面多给了个6 就是给某个程序的所有者suid权限,可以像root用户那样启动。

第四步:编译系统,烧进去,执行一下看看效果:

Android定制系统里如何让APP可以有root权限_第2张图片

Android定制系统里如何让APP可以有root权限_第3张图片

你可能感兴趣的:(android)