【技术分享教程】黄鸟在 Android 11 上的使用-逆向分析

我们需要看看 HttpCanary 是如何判断证书是否安装的。
刚开始,尝试使用 android 内证书管理的相关关键字代码搜索,没有找到。绕了一圈,最后还是从经典的 UI 入手,查看 APP 安装证书的时候是怎么操作的。
定位到安装证书 activicty,反编译查看,APP 混淆了,控制流平坦化,变量名也很恶心。
【S.F.X】黄鸟在 Android 11 上的使用-逆向分析
但是其实这里也不是十分复杂,经过计算,追踪,最终发现了 HttpCanary 对证书的检查逻辑。(下图是经过我修改显示 toast 了,不是原 smali 的转化)
【S.F.X】黄鸟在 Android 11 上的使用-逆向分析
.原来是通过检测某个后缀名为“.jks”的文件的存在来判定是否已安装证书的。

但是为了准确判断是这个起作用,我们继续查找关键词“.jks”,查看这个文件在哪里被创建的。最后追溯到了证书安装的 Activity 了。
【S.F.X】黄鸟在 Android 11 上的使用-逆向分析
原来安装证书时,HttpCanary 重写了 onActivityResult(),通过自动安装返回的 resultCode 判断了证书是否安装,如果安装成功便会在 cache 目录下写入一个无内容的 .jks。安装失败就无操作。而这个文件就是它判断是否安装了证书(有点不妥哈,但是没了解过,不太清楚有无更好的方法)。
因此,Android 11 上不能自动安装证书,就没有 .jks 文件,那么应用也就无法识别安装了证书,即使你早已手动安装。所以需要手动建立一个。
经过多次测试,确实如此。
解决方法
1获取证书
较新的版本未安装证书是无法导出证书的,所以需要在 /data/data/com.guoshi.httpcanary/cache/ 目录下找到 HttpCanary.pem。
没有上述文件的话,请到设置里尝试安装证书生成证书。有一些盗版的包名是不一样的,目录也就不同。
将 HttpCanary.pem 复制到内部储存空间上,更名为 87bc3517.0,这便是证书文件了
【别人的证书,你不一定能用,试试看就知道了】
2安装证书
应该没人会安装为用户证书吧?那样就无法抓取加密数据。
安装为系统证书:将证书移到 /system/etc/security/cacerts/ 目录下设置好权限,或者自己弄一个 Magisk 模块替换。这个Magisk 模块不难,就是模板压缩包里添加一个文件而已。
3修改数据
在 /data/data/com.guoshi.httpcanary/cache/ 目录下新建一个 HttpCanary.jks 无内容的文件,改好权限 600,就是改得跟旁边的文件一样的权限就行了。

【S.F.X】黄鸟在 Android 11 上的使用-逆向分析
【 其他改法】

说到底,就是安装证书后需要创建 .jks 文件来使得 APP 识别为已安装证书。至于安装为系统证书都可以自行安装。比如通过手机设置里的安装证书安装为用户证书,再在 Magisk 库里搜索安装 Move Certificates 模块将用户证书迁移为系统证书也是可以的。

最后 HttpCanary 就可以在 Android 11 上愉快地抓包了。

© 版权声明
THE END
喜欢就支持以下吧
点赞0
评论 抢沙发