解决安卓14的抓包证书模块
由于安卓14在证书的路径有变化,导致之前的证书移动到system下面不再生效,分析了下framework.jar,新的系统信任的CA证书放在了/apex/com.android.conscrypt/cacerts下面,并且/apex全部是不可变的。
private static File getDirectory() {
if (System.getProperty("system.certs.enabled") != null && System.getProperty("system.certs.enabled").equals("true")) {
return new File(System.getenv("ANDROID_ROOT") + "/etc/security/cacerts");
}
File updatable_dir = new File("/apex/com.android.conscrypt/cacerts");
if (updatable_dir.exists() && updatable_dir.list().length != 0) {
return updatable_dir;
}
return new File(System.getenv("ANDROID_ROOT") + "/etc/security/cacerts");
}
参考wuxianlin大佬之前发的微博:
Android 14将系统根CA证书,从系统目录/system/etc/security/cacerts迁移到com.android.conscrypt.apex(可通过Google Play动态更新)中,apex的挂载后的目录/apex/com.android.conscrypt/cacerts。
核心修改是这笔提交在原来基于magisk模块overlay /system/etc/security/cacerts方案的基础上,可以在magisk模块的post-fs-data.sh增加一句bind mount即可解决问题。亲测使用HttpCanary在Android 14可以抓仅信任系统根CA证书的应用的包。命令如下:
mount -o bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
当然也可以直接在模块中判断是否存在apex目录,如果存在则直接overlay apex目录,否则overlay system目录
把之前开源的证书移动模块稍微修改了下,增加了安卓14的支持。
一加12 使用APAtch刷入模块测试成功,Magisk和kernelSU自测。
APAtch或者kernelSU使用方法:修改被抓包应用的APP Profile,关闭卸载模块功能。或者直接在ksu设置中关闭默认卸载模块
模块下载地址:
https://wwfi.lanzouj.com/iF3FH1mama8j
github下载地址:
https://github.com/zhaoboy9692/movecert
参考:
本文系作者 @吾爱小白 原创发布在 我的编程学习之路。未经许可,禁止转载。