如何Hook新浪微博红包

873 阅读2分钟

想研究一下新浪微博发红包的参数,于是找来最新的版本9.11.4.

因为新浪微博发红包是基于支付宝,所以就从支付宝的SDK对外的入口开始寻找. 分析微博apk,发现有com.alipay.sdk.app.PayTask这个类.于是把Hook项目打开,Hook payV2这个方法,可是这个类在hook的时候,一致说找不到,我也很奇怪.于是猜想是不是这个包做了什么手脚.

从微博的Application开始看,也没有怎么看懂.开始想借助adb寻找一下Activity的代码,

adb shell dumpsys activity a

这个命令可以查看activity stack state,于是查到对应的Activity,把它拿到AndroidManifest.xml去搜索,发现竟然对不上,hook命令的类,可以找到这个类,AndroidManifest中原始路径不能Hook.

adb shell dumpsys activity -h
可以用上面命令查看具体指令,有很多的内容,根据具体情况,酌情使用

上述步骤,实在没有版本达到我的要求,所以换了个思路,去寻找历史版本,于是从豌豆荚找到来历史版本9.11.0, 这个版本可以Hookcom.alipay.sdk.app.PayTask这个类.

想从微博发红包的界面找起,看看具体调用支付宝付款的地方.找到开发者选项,打开显示布局边界开关,打开一看,是H5界面.心里立马凉了一半,因为好多服务有可能直接在服务器上进行,代码对我帮助就不大了.

后来想想,H5也是走的SDK方法,于是寻找入口,找来找去,还是找到com.alipay.sdk.app.PayTask,把它所有的方法都Hook一遍,还是发现了有使用的地方.针对使用的方法,然后使出杀手锏,查看栈的调用关系.

 Log.getStackTraceString(new Throwable());

通过这个语句,输出到log上,然后就能看到微博是在哪里调用的支付宝的payV2方法.

com.alipay.sdk.app.PayTask.pay
com.alipay.sdk.app.PayTask.payV2
com.sina.weibo.payment.zk.PayProtocol.aliPay

虽然还是不能直接Hook payV2这个方法,在微博通过PayProtocol.aliPay发现了log,可以hook它的log来获取信息.

类
com.sina.weibo.utils.dl
方法
b
参数
String.class, String.class
类型            内容
可以通过类型(PayProtocol)来过滤消息

这样就OK了!