资讯中心 | ![]() |
这个游戏在破解的时候,利用我上一篇介绍的针对移动MM的一般解法,搜索“PurchaseCoce”或者在“onBillingFinish”方法,进行设置,就可以让支付SDK的界面显示“支付发送成功”。 但是想不到是,在点击“确定”返回,一般增加金币的操作并没有执行,而是跳出了一个 Dialog“等待游戏到账..”,然后提示“订单延迟到账,请联系客服”。 可以料想,该游戏在验证通过“短信发送成功”后还是向服务端验证是否计费成功,计费成功了 才会发放相应的金币。 那么我们就循序渐进,搜索关键词“等待游戏到账..”可以来到方法 .method protected onCreateDialog(I)Landroid/app/Dialog; 根据代码得知,这个是设置提示信息的,不是我们要找的关键。 我们再试着搜索“订单延迟到账”,找到方法 .method protected varargs doInBackground 我们看下代码:
invoke-virtual {v7, v8, v6}, Lcom/moling/core/util/proxy/pay/BasePayProxy;->validOrder(Ljava/lang/String;Ljava/lang/String;)Z move-result v6 if-eqz v6, :cond_1 //关键跳 .line 101 iget-object v7, p0, Lcom/moling/core/util/proxy/pay/BasePayProxy$2;->this$0:Lcom/moling/core/util/proxy/pay/BasePayProxy; const/4 v6, 0x0 aget-object v6, p1, v6 check-cast v6, Ljava/lang/String; const/4 v8, 0x0 invoke-virtual {v7, v6, v8}, Lcom/moling/core/util/proxy/pay/BasePayProxy;->payFinish(Ljava/lang/String;Z)V //调用成功购买的方法 .line 125 .end local v2 # "sleep":I .end local v3 # "t1":J .end local v5 # "time":I :goto_0 const/4 v6, 0x0 return-object v6 .line 104 .restart local v2 # "sleep":I .restart local v3 # "t1":J .restart local v5 # "time":I :cond_1 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J move-result-wide v6 const-wide/16 v8, 0x3e8 div-long/2addr v6, v8 :try_end_1 .catch Lcom/moling/core/exception/PayExcetion; {:try_start_1 .. :try_end_1} :catch_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_2 sub-long v3, v6, v3 .line 105 int-to-long v6, v5 sub-long/2addr v6, v3 long-to-int v5, v6 .line 112 .end local v3 # "t1":J :cond_2 sub-int/2addr v5, v2 .line 113 if-gtz v5, :cond_0 .line 114 :try_start_2 new-instance v6, Lcom/moling/core/exception/PayExcetion; const-string v7, "DELAY" const-string v8, "u8ba2u5355u5ef6u8fdfu5230u8d26uff0cu8bf7u8054u7cfbu5ba2u670d" //获取订单失败的提示。 然后保存 即可成功得到金币。 ===== 联通卡转向移动支付SDK的方法:是将检测网络标识的函数返回值永远指向移动接口。这样就算是联通卡也会调用移动的支付接口,破解了移动接口,也就破解了全运营商的购买。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备16040606号-1 |