分享好友 最新动态首页 最新动态分类 切换频道
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系统上验证通过.

最新文章
重庆建设指南,零基础打造专属个性化教程
重庆搭建步骤详解,涵盖从选择域名、购买空间、安装CMS到设计界面、优化SEO等全过程。本文从零基础出发,手把手教你打造个性化,助力你的事业发展。搭建前的筹备工作重庆搭建流程重庆搭建要点1. 明确类型与功能在着手搭建之前,首要任务是
网站制作案例价格多少合适,有哪些可以让大学生自学ps、pr、office的网站值得推荐?
关于“网站制作案例价格多少”的问题,小编就整理了【4】个相关介绍“网站制作案例价格多少”的解答:有哪些可以让大学生自学ps、pr、office的网站值得推荐?  谢谢邀请回答这个问题,网上学习这三个软件的网站实在太多了,选择了几个自
VMware Workstation Pro V17.5.2.23775571 官方版免费软件全功能绿色商业破解版注册码下载
VMware Workstation Pro V17.5.2.23775571 官方版免费软件万水千山自高自痛定思痛大11. 转角,是奇遇,是机遇,还是一场灾难的开始?记忆中,转角就是回家的路,转过一个弯,再一个弯,仰头与那盏熟悉的灯火交汇,空气中弥漫熟悉的味道……
销售提成系统哪个好用?
在选择销售提成系统时,以下几个系统因其功能强大、用户体验良好而备受推荐:1、;2、Salesforce;3、Zoho ;4、HubSpot CRM;5、SAP。其中,简道云因其高度定制化、简单易用和强大的数据分析能力,成为许多企业的首选。简道云可以根据企业
一文讲清楚AI,以及AI的基础理论
科普,科普。AI大热。NVIDIA成为美股市值最高的公司,没有自动驾驶能力的汽车公司最终都成为诺基亚,AI是“人类”最后一项重要发明,机器学习、通用人工智能(AGI)、AI会取代80%的工作岗位,各种故事令人眼花缭乱。我想用一篇文章讲从头到
考研机器人工程就业方向及就业前景
随着科技的不断进步,机器人工程专业逐渐成为研究生们热衷追求的领域之一。那么,机器人工程专业的就业前景如何?未来的发展趋势又是怎样的呢?本文将从这两个方面进行探讨。机器人工程专业是一个充满挑战和机遇的领域。随着人工智能和自动
推荐12个AI免费一键生成PPT的网站【2024年最新】
制作PPT演示文稿是一项重要的技能,无论是在商务会议、教育培训还是各类演讲中。虽然PowerPoint本身提供了许多设计工具和模板,但有时我们还是需要一些额外的帮助来提升演示文稿的专业度和吸引力。幸运的是,随着人工智
高清美女写真一键生成!揭秘超火的AI绘画工具及使用攻略
DeepArt.io:利用深度学习技术,DeepArt允许用户将自己的照片转换为各种艺术风格的作品。虽然生成过程相对简单且效果抢眼,但对生成的美女写真要求较高的用户可能对细节把控感到不满足。DALL-E 2:这是最近大火的一个AI工具,具有极强的生
SEO整站建设提升用户体验
在当今数字化时代,网站的SEO整站建设不仅影响搜索引擎排名,更直接关系到用户体验。优化网站结构、内容和互动性是提升用户满意度的重要手段。本文将探讨SEO整站建设如何有效提高用户体验,包括网站速度、内容优化以及移动端适配等多个方面
濮阳企业在线曝光度提升攻略,SEO优化与网络推广全方位策略
濮阳SEO优化网络推广方法旨在全面提升企业在线曝光度。通过关键词优化、内容营销、链接建设等多渠道策略,精准触达目标用户,提高网站排名,实现企业品牌及产品的高效推广。随着互联网的普及,越来越多的企业开始重视网络推广,尤其是,SEO
相关文章
推荐文章
发表评论
0评