zoukankan      html  css  js  c++  java
  • Android游戏破解练习-大圣降魔录

    Android游戏破解练习-大圣降魔录

    1569399317842

    因为发现跟捕鱼的那个是同个公司,所以可以先直接用AndroidSkiller搜PaySuccesss

    1569396373802

    发现了两个

    一个是接口

    1569396350866

    一个是匿名类

    1569396432275

    看到匿名类肯定想到,是调用了新接口 new 了一个,加下来要搜索它。

    但是在Java Decompiler里面不太好搜索。

    所以我们用jadx-gui打开apk搜索EgamePayListener

    1569397039178

    点击进去后。发现了取消支付,支付失败,支付成功的关键字。同时发现了他们调用了同一个函数。并且参数都是两个,猜测可以把这个函数拿到外面来。

    1569397157823

    用Monitor监视

    先设置一下过滤器。过滤下信息,不然信息很多。

    1569397758219

    发现关键字

    1569397849955

    用jadx搜一下

    发现请求支付所在的函数,有PayCancel,PaySuccess等这些关键字。而这些关键字调用来自 new了一个EgamePayListener,

    1569398404660

    回到Android Skiller

    1569398454140

    应该是在AppActivity.smali里面的order_internal函数里面创建了匿名类

    1569398758738

    往下看有创建了一个匿名类 Activity3.里面调用了onResult函数,把onResult函数想办法从内部函数弄到外面直接调用

    程序原本的操作是:

    1.通过new-instance指令去创建一个匿名类。然后放到v0

    2.然后v0再去调用invoke-direct这个指令,最终调用的是Activity¥3里面的 init方法

    (也就是说调用了构造方法)

    3.然后v0再继续调用invoke-static这个指令,调用EgamePay方法。

    所以这里创建了匿名类Activity3.

    所以我们要去这个匿名类看一下

    1569398694997

    匿名类里面的可以看到成功的关键字等

    1569399042949

    但是因为是匿名类,

    1.所以它要先调用外部类的指针。所以这里。iget-object就是获取p0指针,然后放到v0里面

    2.v0再通过iget这个方法去获取外部类的mOrgID字段

    1569399130698

    3.获取到数值就调用onResult这个方法

    1569399177496

    所以,我们可以从内部类把代码弄到外部,然后把外部调用内部的代码注释掉。

    1569399230418

    v0要改成p0.因为我们已经从内部到了外部了。指针要对应上。

    重新编译。破解成功

  • 相关阅读:
    Nginx 基本命令
    Nginx配置详细
    MySQL 函数大全
    X-Frame-Options 配置
    Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
    idea java 非web程序打包
    mysql 存储过程
    webstorm 重置所有设置
    vue input 赋值无效
    MySQL 性能优化神器 Explain 使用分析
  • 原文地址:https://www.cnblogs.com/ltyandy/p/11585682.html
Copyright © 2011-2022 走看看