本章讲述aosp定制系统的两个用处
集成证书
我们安装charles证书的时候在安卓7以上是无法安装到系统目录的,需要借助movecert模块,当然这需要root,如果可以在刷系统的时候把证书集成到安卓系统里,那不就不用movecert模块了吗
导出charles根证书
安装openssl
网址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions
从这个目录cmd进去
openssl x509 -subject_hash_old -in 证书文件路径 执行这个命令
接着把证书由1.pem重命名成9a43b994.0 前面的数字是由上面计算得到的,而系统证书都是.0结尾的,所以重命名成9a43b994.0
接着把证书复制到aosp目录下的system/ca-certificates/files,里面全是系统证书,接着
source build/envsetup.sh
lunch
选择编号
make -j16
由于前一次编译过了,所以这次编译很快,刷入手机后可以看到已经集成好了charles证书了
root过检测
首先介绍adb相关的知识
adb构成
client端,在电脑上,负责发送adb命令
daemon守护进程adbd,在手机上,负责接收和执行adb命令
server端,在电脑上,负责管理client和daemon之间的通信
adb工作原理
client端将命令发送给server端
server端会将命令发送给daemon端
daemon端进行执行
将执行结果,返回给server端
server端将结果再返回给client端
android编译的时候可以选择编译选项 eng,userdebug,user,很多App检测运行环境是否正常的检测点之一就是检测当前运行的系统属于哪个编译选项。eng、userdebug都是属于风险设备考虑范畴
eng:工程师用的开发测试环境,方便开发调试各种软硬件之间的交互、性能等等,有root和调试权限
userdubug:user版本发布之前的开发调试版本 有root和调试权限
user:正常的手机就是user版本的 无root和调试权限
为什么推荐编译user版本的呢,因为userdubug里有太多特征可以检测到有root权限,那我们怎么既使用uesr版本又同时具有root权限呢?
这里就要先介绍关于adbd降权的操作了,我们知道,root后的手机adb shell进来是$符,通过su可以给adbd提权到root权限,userdebug和user在执行adb shell之后默认都给与root权限,同时都有降权的动作,但是userdebug可以通过su执行升权的操作,而user版本没有su这个东西,所以我们可以在adb shell之后的降权操作进行修改,不让他降权不就可以达到adb shell之后就是root权限吗?
怎么操作呢?
首先开启user模式,默认是没有user版本的编译选项的
pixel4 android10 可以在aosp/device/google/coral/AndroidProducts.mk文件下加上一句aosp_flame-user \,不同的机型和版本略有差别
接下来就是找到adb 降权的位置进行修改即可
首先关闭seleniux,进入aosp/system/core/init/selinux.cpp这个文件,找到IsEnforcing这个函数,直接return false
接下来在降权的位置同理直接return false,在aosp/system/core/adb/daemon/main.cpp这个文件中的should_drop_privileges函数中
做完这些adb shell之后就是直接root权限的,但是还有一些指纹没有修改.
aosp/build/tools/buildinfo.sh文件下 修改ro.build.tags=release-keys
bin/aosp/build/tools/buildinfo_common.sh文件下 修改ro.system.build.tags=release-keys
aosp/build/tools/buildinfo.sh文件下 修改
ro.build.tags=release-keys
ro.build.display.id=QD1A.190821.011 release-keys
ro.build.description=aosp_flame-user 10 QD1A.190821.011 eng.ylh.20221206.080222 release-keys
bin/aosp/build/tools/buildinfo_common.sh文件下 修改
ro.system.build.tags=release-keys
ro.system.build.fingerprint=Android/aosp_flame/flame:10/QD1A.190821.011/ylh01082102:user/release-keys
注意,由于这里是编译的user版本,换了型号需要重新编译
source build/envsetup.sh
make clobber //重新编译
lunch
刷机
sudo adb reboot bootloader
cd ~/bin/aosp
source build/envsetup.sh
sudo ANDROID_PRODUCT_OUT=/home/ylh/bin/aosp/out/target/product/taimen fastboot flashall -w
修改这些指纹可以绕过绝大部分的app的root检测了,比如银行类app和支付宝的刷脸支付