刷recovery.img获取手机root权限

要想获取android手机的root权限,通常会使用漏洞、刷机等方法,使用漏洞的方法比较安全,一般不会影响手机的保修,而且变砖的风险很小。但有时漏洞不管用的时候,还是得使用刷机来获取root权限。

刷机软件(三星手机):

Odin 是较常用的刷机软件,但是Odin是有界面的,对于集成root功能的产品来说,无法直接使用,我需要一个基于命令行的刷机软件来供产品使用;

heimdall 一款开源的三星手机刷机软件,是基于命令行的,比较符合我的需求,但是并不支持所以的三星手机;


简单对比了heimdall和Odin,Odin需要三星的手机驱动配套使用,三星的驱动是串口驱动;而heimdall使用的是usb驱动,不清楚为什么heimdall对有的手机无法使用;

三星手机刷机使用的是Odin协议,我看了下(在heimdall的源码里有),还是比较简单的,我可以将heimdall对usb的操作转向到对串口的操作应该就可以了;


三星手机在进入download模式后,后会在\HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM里面创建一个项,额,具体是什么我忘记了,反正他的值是COMx,这个就是可以操作的端口,打开这个端口后就可以对他进行读写了;然后把heimdall对usb的读写操作转向到这个COMx就可以成功刷机了


制作recovery刷机包:

三星手机的recovery刷机包我们一般使用ChainFire的,但有的手机型号他没有给出刷机包,需要自己制作

cf的刷机过程很专业,又有背景又有文字,为了达到这个效果,害我花了不少时间去编译android的ui库,最后却没有使用,@#¥%…&

cf是使用了可执行程序来刷机的,但对比了其他的刷机软件,发现只使用脚本就能完成刷机了


刷机包制作:

1 解压原版的recovery.img文件

2 修改init.rc文件,把启动recovery进程的地方修改为启动我们制作的刷机脚本文件

3 刷机脚本里挂载跟目录和一些需要修改的目录,比如/data /system等,挂载点可以在/etc/recovery.fsta里面找到

4 把su superuser.apk 启动脚本 等放好,修改他们的属性,宿主等

5 调用reboot,其实可以调用/system/bin/reboot

再打包跟cache一起刷机就ok了


刚开始用ndk编译了一个reboot文件用来重启,死活不能重启,后来发现android源码里recovery文件的编译脚本里有个force static什么的,才恍悟需要静态链接,给链接器传递静态链接的选项就可以让手机重启了


在修改脚本测试的时候,有一次死活不能刷入cache包,使用Odin也是一样的现象,我还以为手机被我刷坏了,出去溜达了一圈回来后,顺手一刷,居然刷进去了,以后也没出现刷不了的情况,根据我多年掐指一算的功力,我断定是因为前面刷得太疯狂了,导致手机过热,刷不进去


以上都是在cf包的基础上修改,刷机,测试的,这次拿了个手机,没有cf包,我制作了一个刷机包,又是顺手一刷,擦,居然没刷进去,而且是死活刷不进去,看了下手机屏幕的显示,我终于明白为什么cf没有刷机包,你明白了吗

你可能感兴趣的:(刷recovery.img获取手机root权限)