通过修改rom包永久获取root权限和所有应用调试功能ro.debuggable

准备工具:

1. adb

2. bootimg


部分安卓机型获取root权限比较难,刷supersu卡刷包和各种刷机工具都不见效;

作为一名移动安全工程师,经常需要对各种APK进行调试,通常调试APK需要满足的条件是apk的配置文件androidmanifest.xml中android:debuggable="true"或者安卓default.prop文件中的ro.debuggable=1。以往,我们都是先将apk反编译,然后手动修改Androidmanifest.xml中的android:debuggable然后重新打包签名,但是随着梆梆、乐固、360等各种“壳”的出现,手动修改Androidmanifest.xml再重打包的方式已经行不通了。

特别是SELinux机制加入安卓以后,我们想要获取所需要的权限变得更加困难。现在有一种一劳永逸的方法,如下。

在使用adb连接手机的情况下,可以看到手机根目录下有一个default.prop文件:


直接使用cat default.prop命令查看内容可以看到ro.secure、ro.adb.secure和ro.debuggable等属性:


正常情况下,该文件中的ro.debuggable的值应该是0,表示不可调试。我已经手动修改为1。ro.secure表示root权限,如果为0则表示启用root权限,1则相反;ro.adb.secure表示adb的root权限,同样0表示启用adb的root权限,1则相反。

----------------------------------------------

下面开始正式介绍修改这些值的方法。

首先我们看看安卓系统rom包的结构:


安卓系统rom包是一个压缩文件,我们可以直接用winrar、7z等工具打开。如上图,我们需要改动的就是boot.img,我们将其解压出来。

修改boot.img需要先将其完全解开,解包boot.img的工具网上有很多,可自行搜索。再此处我推荐使用bootimg。此工具比较方便且文件很小。有exe、java、python等各种版本。我使用的是python版本,其他版本使用方法基本相同

为了方便,将bootimg.py与要修改的boot.img放在同一目录下,首先使用

python bootimg.py --unpack-bootimg
将boot.img解开,可以获得 kernel 和 ramdisk.gz。


此时,我们还看不到需要修改的default.prop,要修改,我们还要继续解开ramdisk.gz。使用命令

python bootimg.py --unpack-ramdisk
现在,文件夹中出现了initrd,我们需要的default.prop就在这里面了。


进入initrd目录,使用notepad、sublime等工具直接修改,比如我需要开启所有应用的调试权限,我将default.prop中的ro.debuggable修改成了1。如果你是需要开启root权限,则将ro.secure的值改为0,要永久开启adb的root权限,可将ro.adb.secure修改为0。。。各个参数都可以按照自己的需求修改。(注意只修改自己需要的参数,不要随意更改,否则可能造成手机无法开机)


修改完成后,开始重新打包,我们先对ramdisk.gz打包,然后对整个boot.img重打包。命令分别如下:

python bootimg.py --repack-ramdisk 
python bootimg.py --repack-bootimg 
打包完成后,会出现一个boot_repack.img,这就是重新打包完成的boot.img。


到这儿,boot.img已经修改完成,接下来有多种方式将其刷入我们的手机。

1. 可以重新将文件名改回boot.img打包到系统rom包中,重新签名,刷入整个rom包。

2.使用fastboot工具刷入手机。

3.使用第三方recovery工具比如TWRP等,手动刷入此boot_repack.img。

重启之后,我们使用adb shell命令查看,可看到,此属性已经被永久修改,不需要每次重启都修改一遍。

如果有不同的意见或者更加简单的方法,欢迎告诉我。

  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值