记录-外挂recovery的制作(魅蓝note)
安卓的开源使其具有很强的可定制性,对于用户来说很具有可玩性。玩机一般来说就是解锁BootLoader刷入第三方recovery,利用第三方recovery刷第三方ROM,刷supersu获取root权限,当然少不了鼎鼎大名的xposed框架……
但是很多厂商是锁定BootLoader且不提供官方解锁的,比如魅族、锤子、360……热门机型还好,或许有大神关注,破解BootLoader,从而刷入第三方recovery。如果使用了小众机型,或是官方对漏洞控制的很好,无法破解BootLoader,进而无法刷入第三方recovery呢?所以就出现了所谓的外挂recovery。
之所以称为外挂recovery,是因为我们并没有把一个recovery镜像(.img)刷入手机的recovery分区,而是利用安卓开机流程中会执行特定路径下的shell脚本,来执行自定义shell代码启动recovery。比如安卓4.4.4时的system/etc/,再如安卓5.0之后的system/su.d/(发现这一点其实是当时找关闭selinux方法时看的一些帖子)。
我手里用的是魅族的魅蓝note,因为一次系统升级时摔了手机一下,变砖了,无法进入recovery,只能进fastboot模式,可惜bootloader是锁定的。因为急需手机的数据,邮寄太慢,打车往返100多公里去售后刷机,刷机的人特多,从早上等到下午4点多,午饭都没吃,最后手机数据全清了。如果bootloader可以解锁,直接flash boot和recovery就不用清除手机数据。为此特别气愤,为什么官方不提供BootLoader解锁,甚至线刷包都刷不进去,需要加密狗。为了所谓的安全?后来在淘宝发现,解屏幕锁15块钱,线刷救砖30块钱左右,全部可远程操作,甚至很多手机维修点也提供服务……
所以,搞起了外挂recovery,现在把要点记录一下。
- 首先手机要能 root,最好是supersu授权;
- 编译机型的recovery,也可以解包同配置其他手机的recovery试试;
- 解包recovery得到ramdisk里的etc,res,sbin,twrps四个文件夹;
- 利用shell脚本或apk程序把这些目录拷贝到手机system分区,把启动recovery的shell脚本拷贝到system/su.d/;
- 开机时判断、拷贝etc,res,sbin,twrps到根目录并启动recovery
下面是我为魅蓝note做的一个外挂recovery,方法适用于安卓5.0以上版本已root的手机。首先编译了魅蓝note的twrp,再利用apk安装,apk提供“安装”,“重启”两个button,“安装”主要是文件拷贝,apk里assets目录下是recovery目录,recovery目录下有busybox、install-recovery.sh、recovery.img(实为zip),recovery.img里有etc,res,sbin(空目录),twrps四个目录,sbin目录打包成sbin.tar.gz(直接拷贝sbin目录可能因权限问题导致某些文件拷贝失败),三个shell脚本,“重启”执行重启手机并启动recovery,主要用到三个shell脚本。
- install-recovery.sh
#!/system/bin/sh
# recoverydir,apk程序会把assets/目录下的文件拷贝到recoverydir
# targetdir,这个脚本会把etc,res,sbin,twrps拷贝到targetdir
# busybox,busybox的路径
recoverydir=/data/data/com.meizu.recoveryinstaller/files/recovery
targetdir=/system/etc/recovery
busybox=$recoverydir/busybox
mount -o rw,remount /system
chmod 777 $busybox
if [ ! -f /system/xbin/busybox ];then
$busybox cp $recoverydir/busybox /system/xbin/busybox
chown 0.0 /system/xbin/busybox
chmod 777 /system/xbin/busybox
fi
if [ ! -e /system/xbin/unzip ]; then
chmod 777 /system/xbin/busybox
/system/xbin/busybox --install -s /system/xbin
fi
if [ -d $targetdir ];then
rm -rf $targetdir
fi
mkdir -p $targetdir
#解压recovery.img(实为zip)
unzip $recoverydir/recovery.img -d $targetdir
chmod -R 777 $targetdir
#解压sbin.tar.gz
tar xvzpf $targetdir/sbin.tar.gz -C $targetdir/sbin
rm -rf $targetdir/sbin.tar.gz
if [ ! -d /system/su.d ]; then
mkdir /system/su.d
chmod 777 /system/su.d
fi
cat /system/etc/recovery/start-recovery.sh > /system/su.d/start-recovery.sh
chmod 777 /system/su.d/start-recovery.sh
mount -o ro,remount /system
2.reboot-recovery.sh
#!/system/bin/sh
if [ -d /cache/recovery ]; then
rm -rf /cache/recovery
mkdir /cache/recovery
chmod 755 /cache/recovery
else
mkdir /cache/recovery
fi
touch /cache/recovery/command
chmod 755 /cache/recovery/command
reboot
3.start-recovery.sh
#!/system/bin/sh
#挂载可读写
mountr() {
mount -o remount,rw /
mount -o remount,rw /system
mount -o remount,rw /custom
mount -o remount,rw /data
mount -o remount,rw /cache
}
mountr
stop
kill -9 $!
#只有执行过reboot-recovery.sh之后-e /cache/recovery/command才为真
if [ -e /cache/recovery/command ];then
mountr
rm -rf /cache/keycache
rm -rf /cache/recovery/command
chmod -R 777 /system/etc/recovery
#拷贝etc,res,sbin,twrps到根目录
cp -rf /system/etc/recovery/etc /
cp -rf /system/etc/recovery/sbin /
cp -rf /system/etc/recovery/res /
cp -rf /system/etc/recovery/twres /
chmod -R 777 /sbin
chmod -R 777 /twres
chmod -R 777 /res
chmod -R 777 /etc
mkdir /tmp
chmod -R 777 /tmp
setenforce 0
mountr
#绑定/data/media/0 /sdcard
rm -rf /sdcard
mkdir /sdcard
mount -o remount,rw /sdcard
mount --bind /data/media/0 /sdcard
runcon u:r:recovery:s0
busybox killall cploadserver
/sbin/recovery
else
start
fi
记录-外挂recovery的制作(魅蓝note)的更多相关文章
- 魅族手机(魅蓝note)无法作为调试设备连接到mac问题的解决
问题描述: OS X(Yosemite),ADB(1.0.32),Android Studio(1.0.1),魅蓝note手机(m1 note,Android 4.4.4,Flyme OS 4.2.0 ...
- 300元差价选谁好 魅蓝note对比魅蓝手机
http://mobile.pconline.com.cn/608/6089437.html [PConline 对比评测]999元的魅蓝note和699元的魅蓝手机先后被发布,代表着魅族中低端手机已 ...
- 魅蓝Note有几种颜色 魅蓝Note哪个颜色好看
http://www.pc841.com/shoujizhishi/39882.html http://news.mydrivers.com/1/359/359443.htm 魅族发布首款千元高性价比 ...
- 我是青年你是良品-魅蓝NOTE 2
2" title="我是青年你是良品-魅蓝NOTE 2"> 明天魅蓝即将迎来自己的新品发布会.选择儿童节的第二天后最喜爱的手机品牌.让其成为真正青年的良品. 在 ...
- 京东专业“卖”队友,魅族手环将亮相1206魅蓝note新品发布会
京东一直是国内顶级的数码产品自营销售渠道,但是,正因为庞大的数据体系和平台特殊性,经常会帮我们发现一些“好玩的”保密性较高的东西,譬如价格.信息.谍照等.而在最新上线的京东超级品牌日活动页面上,专业“ ...
- Fakeapp2.2安装,使用简记--------------转载自iJessie
原文:https://www.cnblogs.com/iJessie/p/8568377.html 1,硬件和操作系统,支持cuda的Nvidia显卡,8G及以上的内存,Windows10 x64(推 ...
- Dash文档制作教程
前言 什么是Dash 面向程序员的文档库(Mac) 代码片段管理工具 这是强烈推荐给每天在各种API文档中摸爬滚打的程序员们的神器. 为什么要自己制作文档 官方的源中没有相关文档 文档在离线下体验更好 ...
- 如何用Delphi开发网游外挂
1.动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标.键盘等,使游戏里的人物进行流动或者攻击,最早以前的“石器”外挂就是这种方式.2.本地修改式,这种外挂跟传统上的一些游戏修改器没有两样 ...
- 变身六次失去核心的小米Note还能火吗
奥特曼变身有时间限制,因此我们总是希望它多变几次身,从而把小怪兽打得嗷嗷叫.但对于科技产品来说,不断推出"变身版",似乎总有江河日下.大势已去之感.三星形形色色的复仇者联盟S6版, ...
随机推荐
- 二进制<4>
位运算简介及实用技巧(四):实战篇 下面分享的是我自己写的三个代码,里面有些题目也是我自己出的.这些代码都是在我的Pascal时代写的,恕不提供C语言了.代码写得并不好,我只是想告诉大家位运算在实战中 ...
- Linux运维打怪升级篇,从苦逼到牛逼的必备装备(转)
http://chenhao6.blog.51cto.com/6228054/1949673
- 关于console.log() 打印得引用类型得数据得相关问题
console.log()打印出来得是这个引用类型最终得结果,而不是在打印得时候当前得值 ,b:} console.log(json) json.a = ; 如上 ,打印得将是 {a:3,b:2} ...
- Java面试进阶部分集合
框架基础 反射:反射是Java开发的一类动态相关机制.因为本身Java语言并不是一款动态语言,如果我们想要得到程序动态的效果,因此便引入了反射机制这一概念. 怎么表达反射? 能用反射做什么? PS:某 ...
- HDU 2767:Proving Equivalences(强连通)
题意: 一个有向图,问最少加几条边,能让它强连通 方法: 1:tarjan 缩点 2:采用如下构造法: 缩点后的图找到所有头结点和尾结点,那么,可以这么构造:把所有的尾结点连一条边到头结点,就必然可以 ...
- UICollectionView的cell创建直接从第三个数据开始问题
实现的效果是这样 大概意思就是第一组没有数据就直接将改组的cell高度变成0效果实现了,但是第二组数据创建cell就出问题了--奇葩问题 * 代码问题在这```-(CGSize)collectionV ...
- html-屏蔽按键盘空格键是滚动条向下滚动
document.onkeydown = function(ev){ var e = ev || event; if(e.keyCode == 32){ return false; } }
- cin和scanf的速度差别
好长时间没有遇到这种问题了,以前虽然知道scanf比cin快,但是没想到快这么多,见图. 50万的数据. scanf输入: cin输入: 网上说用std::ios::sync_with_stdio(f ...
- python常用模块1
一. 什么是模块: 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码 ...
- L2-3. 悄悄关注【STL+结构体排序】
L2-3. 悄悄关注 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在 ...