Root


Linux:Root == Windows:Adminstrator


Android是Linux系统吗?

操作系统 = 系统内核 + 文件系统

Linux发行版:Linux内核 + 文件系统(ext3/4)

Android:Linux内核 + 文件系统(ext3/4)

Android 没有本地窗体系统

而Linux是能够脱离X窗体的。

Android 没有glibc library

Android并不包含一整套标准的Linux应用程序

而Linux也是能够脱离这两点的。

Android内置了专有的驱动程序

然并卵。Linux的内核也分主次,驱动程序也不是不能脱离的,仅仅是去掉后无法识别相应的设备。并不影响Linux的内核的装载和运行。并且在Linux Kernel Configuration里能够自由配置须要卸载的项目。不能由于添加了驱动就觉得不是Linux。并非决定操作系统性质的关键。

推断操作系统种类的并非其上层建筑,而是深层的系统内核和文件结构。

Linux内核中与驱动相关且比較核心的是驱动接口(Linux驱动运行和安装规范)。是一套二进制规范。

综上。Android实质上是Linux。

那么,Root对于Android意味着什么?

用su命令切换到root用户


Android为什么要Root?

删除非官方或定制系统预装的垃圾应用

  • 拥有root权限后直接复制
  • 依据Android Rom复制
  • 通过Recovery升级包方式复制

控制开机载入项

拥有很多其它权限

调试Linux驱动

改动启动画面


提取Root权限的步骤

1.刷一个合适的Recovery

方法一:在bootloader模式下复制整个文件系统

方法二:在Recovery模式将文件拷贝到Android设备的指定文件夹

刷入Clockwork Recovery

通过adb reboot bootloader命令或者关机下按组合按键进入bootloader模式。

fastboot:



危急的命令:

fastboot flash bootloader bootloader.img

// 假设bootloader.img错误。则须要更换主板

自毁命令:

fastboot erase bootloader

// 擦除

刷Recovery:

fastboot flash recovery recovery.img

重新启动设备

fastboot reboot

2.改造su命令的源码

Android自带的su命令仅仅同意root和shell用户(adb shell)调用

3.制作Recovery刷机文件(*.zip)

主要由待复制的文件和Edify语言(用于对文件和文件夹进行操作)编写的脚本文件组成

编写Recovery升级包中的updater-script脚本文件,将su命令拷贝到/system/xbin文件夹中。

4.运行su命令提取Root权限

改造后的su命令,能够被终端和App调用。

5.让ROM本身拥有Root权限(非必需)

不然进入终端运行su命令后才拥有Root权限。


Edify

Android内嵌脚本语言。用于编写updater-script脚本文件。

updater-script是Recovery Rom和升级包的核心。全然由函数组成。

ui_print(msg_1,…,msg_N);

用于在Recovery界面输出字符串,至少须要一个參数。指定多个參数,会将參数值连起来输出。

run_program(prog, arg1,…,argN);

该函数用于运行程序,prog參数是必需的,表示要运行程序文件的完整路径。

其它參数可选。如:

run_program(“/sbin/busybox”,”mount”,”/system”);

delete(file1,…,fileN);

删除一个或多个文件,參数为文件的路径。如:

delete(“/system/xbin/su”);

package_extract_dir(package_path, destination_path);

用于提取刷机包指定文件夹package_path的全部文件到目标文件夹destination_path。

set_perm(uid, gid, mode, file1,…fileN);

设置一个或多个文件的权限。

uid是用户id。gid是用户组id。

假设想让文件的用户和用户组都是Root,须要将uid和gid设为0。

mount(fs_type, partition_type, location, mount_point);

挂载分区。如:

mount(“ext4”, “EMMC”, “/dev/block/paltform/s3c-sdhci.0/by-name/system”, “/system”);

unmount(mount_point);

卸载分区。

如:

unmount(“/system”);

$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('

    ').addClass('pre-numbering').hide();
    $(this).addClass('has-numbering').parent().append($numbering);
    for (i = 1; i ').text(i));
    };
    $numbering.fadeIn(1700);
    });
    });

Android Root原理初探的更多相关文章

  1. Android root 原理

    Android root 原理 0x00 关于root linux和类Unix系统的最初设计都是针对多用户的操作系统,对于用户权限的管理很非常严格的,而root用户(超级用户)就是整个系统的唯一管理员 ...

  2. Android Root原理

    概述:通过阅读本文可以深刻理解Android系统中获得Root权限的方法和原理.本文会详细介绍Root的目的,原理和代码层次的具体实现方法. Android Root介绍: 1. Root目的 手机获 ...

  3. Android系统Root原理初探(转)

    http://www.imooc.com/learn/126 chkconfig setup 解压update.zip这个文件,可发现它一般打包了如下这几个文件: 或者没有updates而是syste ...

  4. [转] Android root 原理

    欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/5572640.html 0x00 关于root linux和类Unix系统的最初设计都是针对多用 ...

  5. Android root检测方法小结

    转载目的,之前主要应用这里的原理解决了,手机被某个APP检测为root过的手机的问题,记录后续可能参考. 出于安全原因,我们的应用程序不建议在已经root的设备上运行,所以需要检测是否设备已经root ...

  6. [Android Pro] android root权限破解分析

    许 多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简 单及安全的,破解Root权限的原理就是在手机的/s ...

  7. 基于unity3d游戏的android版本逆向初探

    https://bbs.pediy.com/thread-212532.htm [文章标题]: 基于unity3d游戏的android版本逆向初探 [文章作者]: dreaman [作者邮箱]: [e ...

  8. Android ADB原理及常用命令

    Android调试桥(ADB, Android Debug Bridge)是一个Android命令行工具,包含在SDK 平台工具包中,adb可以用于连接Android设备,或者模拟器,实现对设备的控制 ...

  9. NFC(6)NFC编程的几个重要类,NFC硬件启动android应用原理

    用于NFC编程的几个重要类 Tag NFC 标签 NfcAdapter Nfc 的适配类 NdefMessage 描述NDEF格式的信息 NdefRecord 描述NDEF信息的一个信息段,类似tab ...

随机推荐

  1. Deploy .Net project automatically with MsBuild and MsDeploy (0)

    I will use a example of my project to show how to use MS Build and MS Deploy in a real project and s ...

  2. 使用javax.script包实现Java设置JS脚本中的变量

    下面例子中,我们通过javax.script包ScriptEngine.put()方法设置JS脚本中的变量,JS把所有在线用户输出. package ajava.code.javase; import ...

  3. C#生成缩略图源码

    先看调用的方法: ).ToUpper())                {                    case "JPG":                      ...

  4. Win10下Docker学习(1)安装

    Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  5. R学习笔记 第五篇:字符串操作

    文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符,函数nchar用于获得字符串中的字符数量: > s='read' > nc ...

  6. 人生苦短,python是岸.

    人生苦短,python是岸. 愿付一生,应许之诚.

  7. HTML基础--元素类型及类型转换

    元素类型及类型转换 一.XHTML元素分类 根据css显示分类,XHTML元素被分为三种类型:块状元素,内联元素,可变元素 1.块状元素(block element) 1)块状元素在网页中就是以块的形 ...

  8. SpringAware

    哈哈,终于把分布式的课程演讲给混过去了,下面开始随便自己学点东西. 正题:SpringAware--------在实际项目中,用到spring容器的本省功能资源,这是Bean必须意识到Spring容器 ...

  9. SpringBoot之简单日志配置

    我的目的指定一个文件夹输出:(不采用指定文件的原因是一个文件的大小时间长了会很大,不利于处理) logging: level: root: INFO org.sselab: controller: I ...

  10. 移动应用开发者最应该知道的8款SDK

    2017年双11全球狂欢节结束后,据大数据公司统计显示,2017年双11全网销售额达2539.7亿,移动端销售占比91.2%.不难看出,智能手机因随身携带.时刻在线等特点,已取代PC,成为网络生活新的 ...