首先,拿到app,发现无壳,无签名校验,然后直接lsp模块打开justtrustme,然后小黄鸟尝试抓包,发现app会提示网络错误。
然后全局搜索https字样,全部替换成了http,由于目标app是rn写的,所以把index.bound的js里面的https也都替换了,再次尝试,还是抓不到包,黄鸟提示app不信任系统证书,要你去替换app内部的证书。
现在目标清晰了,寻找app内部的证书,看到目标app的内部有几个pem文件,寻思直接替换呗,发现无用。
最后全局搜索了一下.pem,发现了一个so,名称为libRouterAppContextJNI.so,IDA打开一看,别有一番天地,里面各种证书绑定啥的,操作了半天,最后用16进制编辑器替换掉了他原来的pem证书(这里的证书长度和黄鸟的长度不一样,怎么办呢,尾部补空格呗)
最后打开app,发现提示无网络,这是正常的,因为pem被替换了,他不信任原本的证书了,打开黄鸟代{过}{滤}理,发现可以正常抓包,至此,抓包成功,本帖结束。
【2024-01-08更新】
最近看到有人不会替换so里面的证书文件,所以单独写一下教程:
去小黄鸟的设置里选择 ”导出HttpCanary 根证书“,然后选择pem格式,会看到提示导出成功,这时候把pem文件发送到电脑上备用。
然后安装010editor或者其他16进制编辑器(可以在爱盘下载)
然后用010editor打开 libRouterAppContextJNI.so 文件,然后搜索 “-----BEGIN CERTIFICATE-----” 关键字,会找到多处,这个时候,复制 pem文件中的base64部分的数据,替换掉原来的数据(这里因为要对齐数据,所以后面我会提供一个python脚本操作)
把so和pem放到脚本同目录,运行如下脚本,执行替换操作,然后替换so,先打开黄鸟开启抓包,再打开对应的软件,可能 会提示app使用了自签名证书,这时候右上角导入就行了,如果没替换so,会提示下图的 目标应用使用了非系统的CA证书,无法抓包。
[Python] 纯文本查看 复制代码import os
PemFilename='HttpCanary.pem'
SoFilename='libRouterAppContextJNI.so'
SoBakFilename='libRouterAppContextJNI_bak.so'
ReplaceContentStart='-----BEGIN CERTIFICATE-----'
ReplaceContentEnd='-----END CERTIFICATE-----'
def FindMid(text,start,end):
startIndex=text.find(start)
endIndex=text.find(end,startIndex+len(start))
return text[startIndex+len(start):endIndex]
def PadPem(pemdata,length):
if(length
replacePem.zip
(996 Bytes, 下载次数: 13)
2024-1-8 17:05 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB
image.png (94.64 KB, 下载次数: 0)
下载附件
2024-1-8 15:27 上传
image.png (130.18 KB, 下载次数: 0)
下载附件
2024-1-8 15:29 上传
image.png (208.83 KB, 下载次数: 0)
下载附件
2024-1-8 15:34 上传
image.png (244.89 KB, 下载次数: 0)
下载附件
2024-1-8 15:35 上传
image.png (90.55 KB, 下载次数: 0)
下载附件
2024-1-8 17:06 上传
image.png (137.52 KB, 下载次数: 0)
下载附件
2024-1-8 17:07 上传