分享好友 最新动态首页 最新动态分类 切换频道
Android 原生获取root权限的办法
2024-12-27 01:29

     太简单了,简单到我都不好意思说,只是我这个人嘛,最近老忘事,记在这里,避免自己把自己给忘了.

Android 原生获取root权限的办法

     在linux下想要获取root权限,执行什么命令?su啊,不会连这个都不知道吧?哇嘎嘎,我太高兴了,比我还笨.其实android系统默认也是有这个命令的,而且它的权限也是其余用户可以执行的权限,那是不是自己在android应用里执行这个shell命令就可以root了呢?哇哦,我突然发现我好聪明啊,比爱因斯坦还聪明一个级别.

     我勒乐个草,不是这样的,为了安全着想,默认是只允许root和shell用户运行的.哇嘎嘎,虽然我不知道android应用程序是以什么用户运行的,但绝对不是这2种.聪明的人肯定想到了替换这个su命令哇.恩,我也是这样想的,现在满天飞的root工具就是基于这个原理.可是那些工具是做了特殊处理的,想要原生就让android系统root,我靠哇,有这么复杂么.忽然想到我当年怎么不回家种田去.多简单的工作哇.忽然让我想到了我想要的那种生活:农妇,山前,有点田..

     其实嘛,这要比想像中的简单得多,但是,但是你要懂各个方面的知识,比如linux系统权限管理,什么setuid,setgid函数等等等,还要会编译android源码树.哎呀,我不说了,我自己都晕了,因为我根本不会嘛.我草,又要花2天时间学习了.

     su命令的原理很简单,就是设置uid来实现的.至于这个uid,其实还有gid.在里面都是用setuid,setgid两个函数来设置的.下面贴上su.c的代码,是在android源码树里copy的.

   

int main(int argc, char **argv)
{
    struct passwd *pw;
    int uid, gid, myuid;
 
    //---------------------------------------------------------------disabled by fisher
   
     
    //----------------------------------------------------------------- 

    if(argc < 2) {
        uid = gid = 0;
    } else {
        pw = getpwnam(argv[1]);

        if(pw == 0) {
            uid = gid = atoi(argv[1]);
        } else {
            uid = pw->pw_uid;
            gid = pw->pw_gid;
        }
    }

    if(setgid(gid) || setuid(uid)) {
        fprintf(stderr,"su: permission denied ");
        return 1;
    }

   
    if (argc == 3 ) {
        if (execlp(argv[2], argv[2], NULL) < 0) {
            fprintf(stderr, "su: exec failed for %s Error:%s ", argv[2],
                    strerror(errno));
            return -errno;
        }
    } else if (argc > 3) {
       
        char *exec_args[argc - 1];
        memset(exec_args, 0, sizeof(exec_args));
        memcpy(exec_args, &argv[2], sizeof(exec_args));
        if (execvp(argv[2], exec_args) < 0) {
            fprintf(stderr, "su: exec failed for %s Error:%s ", argv[2],
                    strerror(errno));
            return -errno;
        }
    }

   
    execlp("/system/bin/sh", "sh", NULL);

    fprintf(stderr, "su: exec failed ");
    return 1;
}

 

这个代码就不说了,本来想说的,打字途中想起不开心的事了,简单代过.看前面那部分被注释掉的代码,这个在执行的时候会检测用户是否为root或者shell,如果不是,直接返回,如果是,那么执行下面的setuid,setgid代码.还不明白的自己去买块老豆腐吃死算了.

 

此方法在android4.2系统上验证通过.

最新文章
视频重绘工具DomoAI 不用SD视频一键就能转动漫
▼用户可以通过提供简短的文本提示,例如描述一位老巫师、一个在水下游泳的女孩或释放魔法的少女,来启动的艺术生成功能。这显示了的灵活性,使用户能够根据自己的需求和创意方向快速实现他们的想法。DomoAI致力于通过其工具台加速用户的实
谷歌的搜索建议XHR请求
是一种通过XMLHttpRequest对象发送异步HTTP请求的技术。XHR代表XMLHttpRequest,是一种在后台与服务器进行数据交换的技术,可以在不重新加载整个页面的情况下更新部分网页内容。XHR请求的优势包括:XHR请求的应用场景包括:腾讯云相关产品
解锁TikTok尾部达人力量:品牌信任在海外市场的构建之路
在数字营销浪潮中,达人的影响力不断增加。相较于头部达人,尾部达人粉丝数量较少,但粉丝群体更加精准,对其内容的信任度和粘性也更高。通过真实、透明的内容创作和互动,TikTok尾部达人成为信任的“传递者”,为品牌出海奠定了坚实的基础
短剧小程序开发定制,付费追剧,广告解锁支持iaa/iap混合变现
标题:短剧小程序开发定制:全方位服务,助力您的付费追剧平台一臂之力正文:在当今移动互联网时代,短剧内容因其形式多样、节奏紧凑、易于消费而广受用户喜爱。作为一家专业的网络科技公司,南阳迈特网络科技有限公司致力于为有志于进入短
日韩精品一区二区三区老鸦窝近日发布最新合作项目引发广泛关注双方将共同开发新技术推动产业升级并加强市场竞争力
  日韩精品一区二区三区老鸦窝近日发布最新合作项目,引发了广泛关注。双方将共同开发新技术,推动产业升级,并加强市场竞争力。这一消息不仅在业内引起热议,也吸引了众多网友的讨论和期待。  日韩两国在科技领域一直保持着紧密的合作
黑神话悟空推荐配置要求 黑神话悟空高配低配介绍
黑神话悟空正在持续预热中,作为一款万众瞩目的游戏,很多玩家都已经进行了预购,但是也有不少人看了pv之后,担心自己的设备无法正常运行游戏,也有玩家很好奇开启最高画质之后的黑神话需要什么配置来支撑,今天小编就来给各位来看看具体的
【省300元】华为NAS存储
华为家庭存储配备,可自行另配硬盘,硬盘接口采用SATA 3接口,最大支持20TB+20TB存储空间。NAS内置AI算力,能够根据不同维度进行图片视频整理。支持自然语义搜索,帮你找到所需内容。同一账号下能够快速读取文件,打破空间的约束。家庭存储
无货源一件代发违法吗(告诉你无货源一件代发怎么做)
无货源一件代发,比较适合没有资金和货源的卖家们,但是,很多卖家也知道淘宝现在的规则也是越来越严了,如果是做一件代发违法吗?因为,这些年因为违规被封店铺的商家也不少,所以,大家的担心也不无道理。一、无货源一件代发违法吗?其实,
怀化智能锁24小时售后服务热线电话号码统一报修(人工客服) - 焦点 - 百科知识-蓝心网
总之,选购一把好的门锁,需要综合考虑多种因素,从锁芯级别、智能功能、材质、设计、安装和维护等方面进行权衡。只有这样,才能确保家门的安全,为家人创造一个霍邱的居住环境。闪电指智能门锁,作为国产智能锁代表品牌之一,值得考虑。重
相关文章
推荐文章
发表评论
0评