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. 代码重构:用工厂+策略模式优化冗余的if else代码块

    最近在工作中优化了一段冗余的if else代码块,感觉对设计模式的理解和运用很有帮助,所以分享出来.鉴于原代码会涉及到公司的隐私,因此就不贴出来了.下面以更加通俗易懂的案例来解析. 假如写一个针对员工 ...

  2. 面试题:判断连个字符串是否互为回环变位(Circular Rotaion)

    题干:   如果字符串 s 中的字符循环移动任意位置之后能够得到另一个字符串 t,那么 s 就被称为 t 的回环变位(circular rotation).   例如,ACTGACG 就是 TGACG ...

  3. Celery 源码解析四: 定时任务的实现

    在系列中的第二篇我们已经看过了 Celery 中的执行引擎是如何执行任务的,并且在第三篇中也介绍了任务的对象,但是,目前我们看到的都是被动的任务执行,也就是说目前执行的任务都是第三方调用发送过来的.可 ...

  4. java之JVM学习--基本机构

    JDK,JRE,JVM关系图 JVM物理结构: jvm内存区详解: 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字 ...

  5. SQL Server 在生产环境中这样写存储过程的坑都避免了吗?

    概述 最近因为业务的需求写了一段时间存储过程,发现之前写的存储过程存在一些不严谨的地方,特别是TRY...CATCH中嵌套事务的写法:虽然之前写的并没有错,但是还是埋藏着很大的隐患在里面.希望这篇文章 ...

  6. C#参考之sealed密封类(转)

    C# 语言参考 sealed(C# 参考) 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承.在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承. 1     ...

  7. Golang 任务队列策略 -- 读《JOB QUEUES IN GO》

    Golang 在异步处理上有着上佳的表现.因为 goroutines 和 channels 是非常容易使用且有效的异步处理手段.下面我们一起来看一看 Golang 的简易任务队列 一种"非任 ...

  8. java多线程系列(九)---ArrayBlockingQueue源码分析

    java多线程系列(九)---ArrayBlockingQueue源码分析 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 j ...

  9. linux服务器使用yum安装nginx

    一,安装nginx和php-fpm yum install nginx php-fpm 二, 找到nginx.conf find / -name nginx.conf 三,添加解析php配置 在ser ...

  10. 开源纯C#工控网关+组态软件(六)图元组件

    一.   图元概述 图元是构成人机界面的基本单元.如一个个的电机.设备.数据显示.仪表盘,都是图元.构建人机界面的过程就是铺排.挪移.定位图元的过程. 图元设计是绘图和编码的结合.因为图元不仅有显示和 ...