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.因为我们已经从内部到了外部了。指针要对应上。

    重新编译。破解成功

  • 相关阅读:
    创建类以及引用一个类
    修改hosts文件
    微信第三方登录接口开发
    Android定位
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 725. Split Linked List in Parts
    Leetcode 445. Add Two Numbers II
    Leetcode 328. Odd Even Linked List
    Leetcode 237. Delete Node in a Linked List
    Leetcode 234. Palindrome Linked List
  • 原文地址:https://www.cnblogs.com/ltyandy/p/11585682.html
Copyright © 2011-2022 走看看