通/断网情况下都抓不到HTTP包,估计彻底废弃了HTTP接口,完全使用RPC方式连接
在程序中搜索了半天,只根据单词找到了HTTP接口,但是并不是APK真正使用的连接方式,所以还要继续追溯
这个APK中没有使用Native层,导入的库也很少,搜索socket才找到了一点调用,但最终也指向了HTTP
虽然关键目标的HTTP包没有抓到,但是有一个每次都会同时发生的HTTP请求(URL-A),猜测在同一个回调函数内、至少是同一个事件触发的。于是根据它的接口去找到了一个方法A
方法A中通过异步任务(Task.execute)产生了URL-A的请求,然后又产生了一个URL-B的请求
异步任务的类查找交叉引用只有这一处new了一个对象,这就很神奇了
然后为了确认异步任务到底是否被调用,我先后用了JEB和IDA来动态调试,都产生了一个更加神奇的结果:
Task类的construct和doInBackground都可以断到,但是run until return以后会回到A中去
然而在方法A中的断点无一命中,甚至出现了可以单步执行到断点所在语句、continue却无法触发断点的情况
另外之前还做了一些验证,将URL-A和URL-B的域名都通过DNS重定向到127.0.0.1上,然而URL-A的结果失效了、URL-B的结果却依旧
总结一下,一些实验结果支持了URL-B是通过RPC连接的(DNS重定向、抓不到HTTP包),而另一些实验结果却导向了URL-B是通过HTTP连接(所在的方法)
唯一可能的解释是异步执行被其他方法调用了,JEB的run until return出现了偏差
突然想起来如果异步任务类Task被继承的话,子类对象也可以调用doInBackground而不被交叉引用觉察
果然写写总结理下思路还是挺有用的23333
在家俊的指点下使用Xposed进行Hook来打印堆栈,明天跑一下试试,看看到底是谁整的这处戏~