Android Root原理初探
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设备的指定文件夹
通过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 = $('
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
Android Root原理初探的更多相关文章
- Android root 原理
Android root 原理 0x00 关于root linux和类Unix系统的最初设计都是针对多用户的操作系统,对于用户权限的管理很非常严格的,而root用户(超级用户)就是整个系统的唯一管理员 ...
- Android Root原理
概述:通过阅读本文可以深刻理解Android系统中获得Root权限的方法和原理.本文会详细介绍Root的目的,原理和代码层次的具体实现方法. Android Root介绍: 1. Root目的 手机获 ...
- Android系统Root原理初探(转)
http://www.imooc.com/learn/126 chkconfig setup 解压update.zip这个文件,可发现它一般打包了如下这几个文件: 或者没有updates而是syste ...
- [转] Android root 原理
欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/5572640.html 0x00 关于root linux和类Unix系统的最初设计都是针对多用 ...
- Android root检测方法小结
转载目的,之前主要应用这里的原理解决了,手机被某个APP检测为root过的手机的问题,记录后续可能参考. 出于安全原因,我们的应用程序不建议在已经root的设备上运行,所以需要检测是否设备已经root ...
- [Android Pro] android root权限破解分析
许 多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简 单及安全的,破解Root权限的原理就是在手机的/s ...
- 基于unity3d游戏的android版本逆向初探
https://bbs.pediy.com/thread-212532.htm [文章标题]: 基于unity3d游戏的android版本逆向初探 [文章作者]: dreaman [作者邮箱]: [e ...
- Android ADB原理及常用命令
Android调试桥(ADB, Android Debug Bridge)是一个Android命令行工具,包含在SDK 平台工具包中,adb可以用于连接Android设备,或者模拟器,实现对设备的控制 ...
- NFC(6)NFC编程的几个重要类,NFC硬件启动android应用原理
用于NFC编程的几个重要类 Tag NFC 标签 NfcAdapter Nfc 的适配类 NdefMessage 描述NDEF格式的信息 NdefRecord 描述NDEF信息的一个信息段,类似tab ...
随机推荐
- 问题:编译eshoponcontainers失败,提示error:invalid reference format
环境: visual studio 2017 v15.4.2,docker ce Version 17.06.0-ce-win19 (12801) 参考问题页: https://github.com/ ...
- 通过PING命令中的TTL来判断对方操作系统
---恢复内容开始--- 通过PING命令中的TTL来判断对方操作系统简单来说,TTL全程Time to Live,意思就是生存周期.首先要说明ping命令是使用的网络层协议ICMP,所以TTL指的是 ...
- DateTime格式
SELECT * FROM TABLE (TO_DATE('2007/9/1','yyyy/mm/dd') BETWEEN CGGC_STRATDATE AND CGGC_ENDDATE OR CGG ...
- linux系统下手动安装Angular-cli
安装Angular-cli 背景 由于公司linux服务器没有外网,无法通过npm包管理器直接安装,只能手动安装一个Angular-cli平台环境! 安装步骤 1. 先再linux系统下安装好node ...
- C语言实现快速排序法(分治法)
title: 快速排序法(quick sort) tags: 分治法(divide and conquer method) grammar_cjkRuby: true --- 算法原理 分治法的基本思 ...
- PEP8
1.规则要求 https://www.python.org/dev/peps/pep-0008 2.工具 https://github.com/jcrocholl/pep8 3.基本使用方法 测试自己 ...
- C# 处理Word自动生成报告 二、数据源例子
还是以学生.语文.数学.分数为例吧, 感觉这个和helloworld都有一拼了. 造一张表如下, 整张报表就围绕这个表转圈了, 顺便说下就是名字如有雷同纯属巧合 新建个存储过程 ALTER PROCE ...
- springboot-mybatis 批量insert
springboot mybatis 批量insert 操作 直接上代码: 1.首先要在pom.xml中导入包: 略...... 2.springboot mybatis配置: package com ...
- Mysql基础--表的操作
1.表的基本概念 每一行代表一条唯一的记录,每一列代表记录中的一个字段. 2.创建表 例子: 3.查看表结构 (1)DESCRIBE语句查看表定义 语法: 例子: (2)SHOW CREATE TAB ...
- Django 2.0 新特性 抢先看!
一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django ...