另一种root方法,Android boot.img破解
一、破解原理
Android手机获得Root权限,其实就是让/system和/data分区获得读写的权限。这两个分区的权限配置,一般在根分区的init.rc文件中,修改这个文件可永久获得root权限。
众所周知,市面上绝大部分的Android手机文件系统有三个分区,分别是/,/system,/data。根分区(/)是打包为ramdisk.img后,再与kernel的zImage打包为boot.img。boot.img在EMMC/NAND中以RAW DATA的形式存在,且除使用烧写工具外,无法读写。正因如此,根分区(/)在每次开机时都会从存储器中加载到RAM, 所以根分区(/)是难以不刷机破解的。
如何破解呢? 我们推荐的办法是:获得boot.img,解压boot.img得到ramdisk.img, 再由ramdisk.img解压得到root目录(/),修改其中的init.rc文件,再打包,最终得到新的boot.img。最后利用烧写工具将boot.img烧写到手机即可。
注: 现在的手机厂商都有提供升级软件包,获得boot.img和scatter file不是一件难事,。加之所有MTK手机厂商都采用flash tools工具。此方法具有较高的实战性。
二、必备工具
1. linux运行环境。所有破解操作都是在linux下完成的。
2. split_bootimg.pl。 该工具用来分解boot.img
3. mkbootfs。 用来生成bootfs。
4. minigzip。 轻量级ZIP压缩工具。
5. mkimage。用来生成带标识头(512字节)的工具,有些厂家不使用该工具,如高通。
6. mkbootimg。用来生成boot.img的工具。
三、破解步骤
1.获得boot.img.
2. 执行$./split_bootimg.plboot.img, 将boot.img解压为zimage和ramdisk.img, 名字分别为boot.img-kernel, boot.img-ramdisk.gz。请记住这里的Board name,后面打包的时候需要用到。
3. 执行$dd if=boot.img-ramdisk.gz skip=1 bs=512of=ramdisk.gz, 该命令从uRamdisk中获得ramdisk镜像。
4. $mkdir root, $cd root, $gzip -dc ../*-ramdisk.gz| cpio –i, 这三条命令最终将ramdisk.img.gz解压到 root目录下。
5. 修改root目录下/system,/data分区的权限。 权限破解都在这一步。
6. $ ./mkbootfsroot | ./minigzip >new_ramdisk.img
7. $./mkimage new_ramdisk.img ROOTFS>u_new_ramdisk.img
8. $./mkbootimg --kernel boot.img-kernel --ramdisku_new_ramdisk.img --board [Board name]--output new_boot.img。注Board name见第2步描述。
9. 烧写boot.img到手机。
10. ok!
另一种root方法,Android boot.img破解的更多相关文章
- Android中定时执行任务的3种实现方法
在Android开发中,定时执行任务的3种实现方法: 一.采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式)二.采用Handler的postDelayed(Runn ...
- Android中定时器的3种实现方法
原文:http://blog.csdn.net/wulianghuan/article/details/8507221 在Android开发中,定时器一般有以下3种实现方法: 一.采用Handler与 ...
- 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)
安卓(android)建立项目时失败.出现AndroidManifest.xml file missing几种解决方法?(总结中) Eclipse新建项目.遇到这种问题.注意例如以下: 1.文件名称最 ...
- 【转】Android中定时器的3种实现方法
原文网址:http://www.android-study.com/pingtaikaifa/508.html 在Android开发中,定时器一般有以下3种实现方法: 一.采用Handler与线程的s ...
- 在Android开发中,定时器一般有以下3种实现方法
在Android开发中,定时器一般有以下3种实现方法: 原文地址http://www.360doc.com/content/12/0619/13/87000_219180978.shtml 一.采用H ...
- android studio gradle 两种更新方法更新
android studio gradle 两种更新方法更新 第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper ...
- Android手机插上usb能充电但不能识别的一种解决方法
设备要求 已root的Android手机. 背景 这个方法是意外发现的,最初同事有一台测试机插上usb能充电但不能识别,他让我帮他看看怎么回事,于是我就按照常规套路,开发者模式.usb调试.MTP什么 ...
- 在Android开发中,定时执行任务的3种实现方法
在Android开发中,定时执行任务的3种实现方法: 一.采用Handler与线程的sleep(long)方法(不建议使用,Java的实现方式)二.采用Handler的postDelayed(Runn ...
- Android开发 ---Button的OnClickListener的三种实现方法
button的OnClickListener的三种实现方法 onclick事件的定义方法,分为三种,分别为 1.在xml中进行指定方法: 2.在Actitivy中new出一个OnClickListen ...
随机推荐
- BZOJ1119: [POI2009]SLO
1119: [POI2009]SLO Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 379 Solved: 181[Submit][Status] ...
- 安卓,分享到facebook的若干种方法汇总
近期做了facebook的分享功能,遇到了很多问题,这里总结一下,供大家参考,不足之处还请大家指正. facebook分享方式: 1.通过intent调用调用本地facebook应用方式 支持单独分享 ...
- LINQ TO SQL 常用语法
LINQ To SQL中IN的用法 IN: C# var result = from s1 in context.Customers where (new string[] { "UK& ...
- [转]The culture name list in C#
Culture Names [C#] This example shows how to get all culture names in the .NET Framework. Use static ...
- JDK、JRE和JVM的区别与联系
首先来说一下JDK JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime E ...
- HDU-1869六度分离
Problem Description 1967 年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不 ...
- NOI2014 D2T3 购票 简单粗暴解法(凸包维护)
之前说过这题能用点分治(详见 http://www.cnblogs.com/jasonyu/p/noi2014.html),但其实还有更粗暴的解法. 要求出一个点的答案,我们需要知道树上一段路径的点形 ...
- libvirt-adabddad
kvm i686 libvirtError: internal error cannot load AppArmor profile 'libvirt-adabddad-35ba-b9ca-e250 ...
- 认识v$fixed_view_definition
认识v$fixed_view_definition v$fixed_view_definition 这个视图功能很强,可以将一些视图的数据来源(视图的定义)给找出来.直接举例: 1.v$sessi ...
- mysql中的unique
distinct可以把重复的行去掉,查询时候用select distinct * from ...; unique在MySQL中是完整性约束里的一种,如果某列的值需要是唯一的那么就添加UNIQUE约束 ...