前言
一般需要抓取https的数据包,只需要电脑安装抓包工具例如fiddler、charles 。然后手机上配置代理,保证手机跟电脑在同一网络下,然后手机安装抓包工具的证书,基本都可以抓到https的数据包。(安卓版本控制在6.0想下兼容,高于6.0就无法抓到https的包,因为google在Android N (24)和其之上的一个安全行为变更,系统默认不再信任用户app或者系统自定义添加的证书)。
当你把这些需要的环境都准备好以后,发现新版某音apk用了SSLPinning,
又当你写完frida脚本,以及xposed的justtrustme安装到手机上的时候再次打开新版某音app,发现新版某音app用的竟然是非系统的的ssl库,以上就是我的经历,为了大家不必走我的弯路,今天带大家解决一下如何去除这种sslpinng方案。
自13.5版本以后的版本就抓不到https的包了。
正文开始:
最新版的某音用上了sslpinng技术,而且还是so层,导致很多想要一窥究竟的小伙伴抓不到包,让人十分头大.。
这里给大家带来一个不需要frida hook 抓最新版包的方案!。
本文中以20.5.0 32位某音apk为例。
因为每次都frida hook libsscronet.so 觉得十分繁琐,又想快速抓包.所以我用了Patch的方案。
开工
打开ida,加载某音的libsscronet.so,等待几分钟等待so加载完毕,然后在左侧根据关键字"SSL_CTX_set_custom_verify"找到找到如下图方法。
如下图就是搜索到的函数名字,有2处,我们选择第一个函数进去。
一顿S操作以后,找到 sub_110FDC函数就是校验证书的方法。
如下图黄色标记的就是该函数的位置,有3个参数。
第三个参数就是校验的地方 并且是个回调函数,那我们就进去看看那 。
如下图可以看到最后return 了1。
可以看返回值是1,经过反复调试,发现只有当他返回值为0的时候才可以过ssl,所以我们把他改成0 然后这种点位一共有3个 ,全部保存为0 然后ctrl+s 保存一下。
然后把修改过的so复制到你的安卓手机上,这种方案,不限制安卓版本,手机必须ROOT,因为我们要替换lib下面的libsscronet.so。
最好手机上安装RE文件管理器,打开RE,进入到/data/app/com.ss.android.ugc.aweme-xx==/lib/arm目录下,找到libsscronet.so,删除原来app内的so。然后把我们修改过的so替换进去就可以愉快的抓包啦!
如下图是包的目录。
———————————————