180719 安卓-RPC对象查找不到的问题分析

通/断网情况下都抓不到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来打印堆栈,明天跑一下试试,看看到底是谁整的这处戏~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值