Android游戏破解练习-大圣觉醒
用Android Skiller搜下关键字看有没有PaySuccess
发现有关键字
那么就用Jadx继续搜索
找到关键字找到它对应类,右键查找引用
看看哪里引用了
一直往上找。会看到
日志,过滤一下
发现关键信息
再Jadx直接搜索中文支付接口被调用
进入后,发现d应该是刚刚看到的跟支付有关的类
但是不确定,所以想加个日志,那么要再Android Skiller里面找到这个位置
根据之前再jadx里面的d函数看到,run函数前面有个判断。
因此,在Android Skiller里面找到类后,找到run,方法前面有个判断,注释掉
右键插入log
下面不让它goto,所以直接加个return void
有发现log,说明这个跟支付是有关系的
但是还是弹出了这个支付。所以还要在往前找一点。
在这里runOnUiThread执行了一个线程的回调函数
一直往上看。看到这,猜测可能这个MyOPayLinstener是我们实际支付的那个函数
进去看下
发现这个状态只有1是成功的。其他失败,那么是否可以在外面直接调用成功的这个函数。
观察他们所在的类的位置。看是否能直接调用nativeBuySuccessHandler()
注释掉这3行
然后调用我们要调用的函数
首先它是一个静态函数 因此invoke-static,然后复制文件夹名字加上;->函数名调用,最后V是返回值。
添加代码
.line 534
invoke-static {}, Lorg/cocos2dx/lib/Cocos2dxActivity;->nativeBuySuccessHandler()V
#new-instance v1, Lorg/cocos2dx/lib/Cocos2dxActivity$MyOPayLinstener;
#invoke-direct {v1, p0}, Lorg/cocos2dx/lib/Cocos2dxActivity$MyOPayLinstener;-><init>(Lorg/cocos2dx/lib/Cocos2dxActivity;)V
.line 532
#invoke-static {v0, p0, v1}, Lcom/opay/android/sdk/OPayUtil;->pay(Ljava/lang/String;Landroid/app/Activity;Lcom/opay/android/sdk/OPayCallBack;)V
编译。完成