今天遇到个小问题,我想抓包看看百度地图的登录过程,看能不能用纯协议搞出来通讯协议,而不是用selenium将就,但是半路发现,我用上自己写的抓包脚本,用Frida来Hook百度地图是无法抓到登录包的,但是其余的包,例如用户信息历史轨迹等,都可以顺利抓到,这就让我彻底疑惑了,难道百度又有了什么证书锁定的新方法?还是咋回事...我那个Hook脚本竟然会不起作用?这就激发了我的研究热情...
就在这个界面,我只要开代理,界面就显示网络连接失败,这种直接断网的套路,应该就是SSL Pinning没有成功绕过,也就是说,可能百度用到了新的证书锁定技术~
接下来我尝试换种方法,先看看百度地图的顶层活动名称是啥:
adb shell dumpsys activity | findstr mFocusedActivity
接下来反编译一下,找到这个activity,瞧瞧里面的代码是怎么回事:
接下来,定位到了错误提示代码,这里就是回馈给前端错误提示的代码:
接下来继续一步一步向上回溯:
可以确认百度地图的登录确实是内嵌了webview,使用网页登录。
接下来继续找,看看到底是哪里不让我抓包,我怀疑是这里在搞事情:
进入passportSDK这个类看看:
可以确定应该就是这个类内部有问题,接下来看到底是哪里的代码会发现我挂了代理在抓包呢?如何确定呢?我认为需要回过头看这里:
这里的代码是用try...catch方法来捕获异常,如果有异常就会给前端反馈网络连接失败,所以剩下的体力活就是---在可疑的代码块附近寻找抛出异常的点,仔细看,判断可疑代码到底是不是检测我挂代理的代码即可~
剩下的体力活明天搞,今天思路已经出来了~快到十二点了,准备恰饭~
觉得好看的铁铁们可以关注一哈: