愤怒的小鸟内购分析

刚开始学习安卓逆向的我也来破解一下简单的小鸟 用到的工具:ddms,AndroidKiller

1.首先打开支付页面,再打开ddms。选择akp的进程

2.此时关闭页面查看ddms输出。

3.AndroidKiller 中搜索方法名,notifyDeliverGoods,搜索到了8条结果,根据名称,我选择了 Game Manager 这个字面意思游戏管理器,进去后查看就是ddms输出的地方。

4.简单了看了一下分析如下

  .line 118
    if-eqz p1, :cond_1        //跳转到支付失败的代码,那我们就注释掉这一行不让他跳过去

    .line 119
    sput-boolean v0, Lcom/talkweb/twOfflineSdk/GameManager;->isCallback:Z

    .line 120
    invoke-static {}, Lcom/talkweb/twOfflineSdk/GameManager;->access$1()Landroid/app/ProgressDialog;

    move-result-object v1

    if-eqz v1, :cond_0        //跳转到支付成功的代码。那我们就不用它判断直接goto 过去,相当于 x86上面的 jmp

    .line 121
    invoke-static {}, Lcom/talkweb/twOfflineSdk/GameManager;->access$1()Landroid/app/ProgressDialog;

    move-result-object v1

    invoke-virtual {v1}, Landroid/app/ProgressDialog;->dismiss()V

    .line 123
    :cond_0
    const-string v1, "\u652f\u4ed8\u6210\u529f!"           //翻译过来就是支付成功

5.修改后编译,安装模拟器上后尝试购买发现还是不行,再次关闭页面查看ddms输出的信息。可以看到之前的已经提示支付成功了,但是上面还有一个支付失败,还是继续搜索该方法名 onRechargeFinished,

6.分析 onRechargeFinished

    if-eqz p1, :cond_0        //跳转到支付失败的地方。上面的代码就是一些拼接字符串操作直到下面这个跳转 

    .line 69
    new-instance v0, Ljava/lang/Thread;

    new-instance v1, Lcom/talkweb/twOfflineSdk/GameManager$1$1;

    iget-object v2, p0, Lcom/talkweb/twOfflineSdk/GameManager$1;->val$mContext:Landroid/app/Activity;

    invoke-direct {v1, p0, v2}, Lcom/talkweb/twOfflineSdk/GameManager$1$1;-><init>(Lcom/talkweb/twOfflineSdk/GameManager$1;Landroid/app/Activity;)V

    invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V

    .line 105
    invoke-virtual {v0}, Ljava/lang/Thread;->start()V      //启动一个线程主要目的就是执行加载动画,经尝试发现如果启动这个线程基本就会一直卡在这个页面一直加载。可能是没收到什么什么请求吧。

    .line 112
    :goto_0
    return-void   //直接返回了也没执行什么成功的方法,只有执行失败的方法,

7.经过分析以后我是直接在这个函数口 直接 return-void 不执行任何代码。

posted @ 2021-02-08 11:01  不会英语  阅读(278)  评论(0)    收藏  举报