首先在模拟器里把乐健体育最新版下载好,开始我们的逆向之旅。
模拟器挂代理抓包,我们发现开了代理后抓包后网络数据包全部都不能正常收发,根据这个特点,我们能快速推断出乐健是用了SSL Pinning来反抓包。
模拟器开Xposed,载入JustTrustMe,hook干掉所有的SSL证书。
打开BS,已经能正常拦截数据包了。
在我们登录账号后,弹出来了这个弹窗:
把我吓得不轻,不过我开着数据包拦截,我把所有的包截下来研究,并没有发现向服务器传输这方面记录的包。
不过这个弹窗出来后就会把程序关掉,这里有两个思路,一个是做虚拟机反检测,一个是把这个弹窗给结束掉。
这里为了长久研究,我选了第一种,实际上第二种会更方便些。
打开六芒星,把当前Activity的dex导出,然后打开JD分析。
字符串搜索“模拟器”,找到代码位置:
我们发现这里是调用了一个CheaterTerminator的函数来做判断是否是模拟器。
同时也看出来了,乐健的上报后台完全是吓唬人,根本就没有实际上报。
于是我们继续跟进:
研究这个函数,我们发现它实际上做了这么一个操作,寻找所有可以打电话的Intent,然后判断如果数目为0,就是处于模拟器环境,因为模拟器一般都没有拨打电话的功能。
这还不简单?打开应用商店顺便下载一个电话APP。
再次启动乐健:
OK,这次已经检测不到模拟器环境了。
接下来就是简单的打开跑步然后抓包分析,就不多做描述了,因为我以前写过,我就直接用的之前的代码。
这里多说一点,乐健数据传输时会有个MD5加密,服务端会进行校验,这部分代码反编译就能找到。
溜了溜了