【Android逆向】frida 破解 滚动的天空
1. apk 安装到手机中
2. 玩十次之后,会提示 充值
3. adb shell dumpsys window | grep mCurrentFocus
查看一些当前activity是哪一个
是 AppActivity
4. 阅读代码,感觉是unity3d做的游戏
5. apk拖入到jadx中, 搜索“购买无线求”, 发现一个xml dialog_payconfirm.xml
, 找到加载这个xml的类是com.turbochilli.rollingsky.g.a.java
,代码还是做了混淆的,不过不影响阅读
6. 阅读他的onclick方法, 有点重要的a(this.g, this.f, PayAgentHolder.createInstance().getThirdPartyPay(), this.l);
方法,点进去看看, 会调用大到payAgent.pay(str, 0, new com.turbochilli.rollingsky.b.a(str));
7. 第三个入参new com.turbochilli.rollingsky.b.a(str)
,是一个回调,看看它的定义, 对应的类是com.turbochilli.rollingsky.b.a
8. 这里有好几个很重要的方法onPayCancel
和onSendOrderInfo
, onSendOrderInfo 阅读代码可以得出是成功后调用的代码
9. hook onPayCancel 然后执行onSendOrderInfo 试一试
代码
function main() {
Java.perform(function () {
var baHandler = Java.use('com.turbochilli.rollingsky.b.a')
console.log('1111' )
if (baHandler != undefined) {
console.log('2222' )
baHandler.onPayCancel.implementation = function (iProductObj, i) {
console.log('hooked i = ' + i)
console.log('hooked i = iProductObj ' + JSON.stringify(iProductObj))
this.onSendOrderInfo(iProductObj, i)
}
}
})
}
setTimeout(main)