Android游戏破解练习-大圣觉醒

Android游戏破解练习-大圣觉醒

Android游戏破解练习-大圣觉醒

用Android Skiller搜下关键字看有没有PaySuccess

发现有关键字

Android游戏破解练习-大圣觉醒

那么就用Jadx继续搜索

找到关键字找到它对应类,右键查找引用

Android游戏破解练习-大圣觉醒

看看哪里引用了

Android游戏破解练习-大圣觉醒

一直往上找。会看到

Android游戏破解练习-大圣觉醒

日志,过滤一下

Android游戏破解练习-大圣觉醒

发现关键信息

再Jadx直接搜索中文支付接口被调用

Android游戏破解练习-大圣觉醒

进入后,发现d应该是刚刚看到的跟支付有关的类

但是不确定,所以想加个日志,那么要再Android Skiller里面找到这个位置

Android游戏破解练习-大圣觉醒

根据之前再jadx里面的d函数看到,run函数前面有个判断。

因此,在Android Skiller里面找到类后,找到run,方法前面有个判断,注释掉

Android游戏破解练习-大圣觉醒

右键插入log

Android游戏破解练习-大圣觉醒

下面不让它goto,所以直接加个return void

Android游戏破解练习-大圣觉醒

有发现log,说明这个跟支付是有关系的

Android游戏破解练习-大圣觉醒

但是还是弹出了这个支付。所以还要在往前找一点。

Android游戏破解练习-大圣觉醒

Android游戏破解练习-大圣觉醒

在这里runOnUiThread执行了一个线程的回调函数

Android游戏破解练习-大圣觉醒

一直往上看。看到这,猜测可能这个MyOPayLinstener是我们实际支付的那个函数

进去看下

Android游戏破解练习-大圣觉醒

发现这个状态只有1是成功的。其他失败,那么是否可以在外面直接调用成功的这个函数。

观察他们所在的类的位置。看是否能直接调用nativeBuySuccessHandler()

注释掉这3行

Android游戏破解练习-大圣觉醒

然后调用我们要调用的函数

首先它是一个静态函数 因此invoke-static,然后复制文件夹名字加上;->函数名调用,最后V是返回值。

添加代码

Android游戏破解练习-大圣觉醒

.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

编译。完成

上一篇:C#--Invoke和BeginInvoke用法和区别


下一篇:Non-terminating decimal expansion; no exact representable decimal result.