首先感谢王同学提供的样本,因为王同学那天找到我咨询我说有一个应用Fiddler抓包失败,其实对于这类问题,我一般都会这么回答:第一你是否安装Fiddler证书了,他说他安装了。第二你是否用了我之前说的那个Xposed框架JustTrustMe,不了解这个框架的同学可以查看这里:Python爬取应用「英语流利说」的配音视频数据;他说也用了这个方案还是不行。到这里我就没理由不帮他看了,自己下载了应用安装之后,的确有这个问题:
看到了,这里就是这样的提示,也没看到具体的请求参数啥的,所以这个就引发了我的兴趣,那么不多说了直接爆破吧,突破口很简单,直接全局搜这个接口api.izuiyou.com即可:
搜索结果很多,主要看纯接口那个,通过两三次的点击浏览最后定位到这一处:
到这里就看到了,其实他内部用的是okhttp进行网络请求的,然后使用AsyncTask类进行操作,但是在构建okhttp的时候他做了很多设置操作,首先是参数设置:
到这个c类其实是设置okhttp的拦截器,这里简单看一下应该是post方式请求会把参数进行加密处理,我们看看那个加密代码:
个不多说了,依然采用底层加密操作,到这里我们就直接hook它:
后安装模块运行即可,然后我们手机不挂代理访问,这样就能正常拉取数据了,看看加密的都是啥信息,我们在首页进行下拉刷新操作:
看到了下拉数据接口是recommend的,然后参数就是请求参数信息,看到最后加密之后的只有一个sign字段了,应该是把参数放到so层进行加密处理了,那么这个加密逻辑不是本文的介绍重点,后续会继续单独介绍如何动态调试so来弄出加密算法!
继续回到刚才设置了okhttp的拦截器之后,就设置okhttp的SSLSocketFactory和X5