本帖最后由 jazk2004 于 2017-11-6 14:37 编辑
Screenshot_2017-11-06-13-06-37-196_bin.mt.plus.png (169.32 KB, 下载次数: 4) 下载附件
2017-11-6 13:27 上传
这是我发的第二个分享破解内购的帖子了,【第一个是:https://www.52pojie.cn/thread-658136-1-1.html】
-----------------------开始--------------------------------------------
游戏:【元气骑士】https://www.taptap.com/app/34751
环境:【手机端】
工具:【MT管理器2】
过程:
第一步【获取相关提示信息】:下载游戏安装之后,过了教程,然后在“售货机”那里可以购买宝石,1元=800宝石,点击购买后,跳转到爱贝支付,然后选择取消支付,提示支付失败;
第二步【按提示信息搜索】:打开MT管理器2,找到游戏安装包,点击后以“查看”方式打开,选择classes.dex文件 -->Dex编辑器++, 这里我一般选择搜索“失败”,得到下图页面
[Java] 纯文本查看 复制代码
goto_46 :pswitch_46 #记住这个编号,下面要修改 invoke-static {}, Lcom/chillyroomsdk/sdkbridge/config/SdkConfig;->getInstance()Lcom/chillyroomsdk/sdkbridge/config/SdkConfig; move-result-object v1 const-string v2, "publicKey" invoke-virtual {v1, v2}, Lcom/chillyroomsdk/sdkbridge/config/SdkConfig;->getAppParam(Ljava/lang/String;)Ljava/lang/String; move-result-object v1 invoke-static {p2, v1}, Lcom/iapppay/sdk/main/IAppPayOrderUtils;->checkPayResult(Ljava/lang/String;Ljava/lang/String;)Z move-result v0 const-string v0,"true" #这里是一个容易忽略的地方,因为checkPayResult方法返回值赋值给v0,所以使v0=true .line 101 .local v0, "payState":Z const-string v0, "true" .line 102 iget-object v1, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->this$1:Lcom/chillyroomsdk/iapppay/MainActivity$3; iget-object v1, v1, Lcom/chillyroomsdk/iapppay/MainActivity$3;->this$0:Lcom/chillyroomsdk/iapppay/MainActivity; const-string v2, "支付成功" invoke-static {v1, v2, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v1 invoke-virtual {v1}, Landroid/widget/Toast;->show()V .line 103 iget-object v1, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->this$1:Lcom/chillyroomsdk/iapppay/MainActivity$3; iget-object v2, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->val$orderId:Ljava/lang/String; iget-object v3, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->val$productId:Ljava/lang/String; iget-object v4, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->val$extra:Ljava/lang/String; invoke-virtual {v1, v2, v3, v4}, Lcom/chillyroomsdk/iapppay/MainActivity$3;->onPaySuccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V return-void goto :goto_19[Java] 纯文本查看 复制代码
.line 96 :pswitch_data_88 .packed-switch 0x0 :pswitch_46 #改成成功对应pswitch :pswitch_46 #改成成功对应pswitch :pswitch_46 #改成成功对应pswitch .end packed-switch .end method[Java] 纯文本查看 复制代码
:try_start_1f8 move-object/from16 v0, p0 iget-object v2, v0, Lcom/chillyroomsdk/iapppay/IAppPayOrderRestorer;->m_activity:Landroid/app/Activity; const-string v3, "此订单没有进行支付,如有疑问请咨询客服" const/4 v4, 0x1 invoke-static {v2, v3, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v2 invoke-virtual {v2}, Landroid/widget/Toast;->show()V .line 163 move-object/from16 v0, p0 iget-object v2, v0, Lcom/chillyroomsdk/iapppay/IAppPayOrderRestorer;->m_orderId:Ljava/lang/String; invoke-static {v2}, Lcom/chillyroomsdk/sdkbridge/order/OrderManager;->RemoveOrderFromPending(Ljava/lang/String;)V :try_end_20d .catch Lorg/json/JSONException; {:try_start_1f8 .. :try_end_20d} :catch_20e .catchall {:try_start_1f8 .. :try_end_20d} :catchall_258 goto :goto_1be[Java] 纯文本查看 复制代码
:goto_1be move-object/from16 v0, p0 iget-boolean v2, v0, Lcom/chillyroomsdk/iapppay/IAppPayOrderRestorer;->m_restoreAll:Z if-eqz v2, :cond_23a #判断v2如果等于0,跳转到cond_23a,通过下面的分析,这里要注释掉 sget-object v2, Lcom/chillyroomsdk/sdkbridge/order/OrderManager;->pendingOrders:Ljava/util/ArrayList; invoke-virtual {v2}, Ljava/util/ArrayList;->size()I move-result v2 if-lez v2, :cond_23a #判断v2如果小于等于0,跳转到cond_23a ,通过下面的分析,这里要注释掉 .line 169[Java] 纯文本查看 复制代码
:cond_23a move-object/from16 v0, p0 iget-object v2, v0, Lcom/chillyroomsdk/iapppay/IAppPayOrderRestorer;->m_dialog:Landroid/app/ProgressDialog; #使v2=m_dialog; if-eqz v2, :cond_b3 #判断v2如果等于0,跳转到cond_b3 .line 172 move-object/from16 v0, p0 iget-object v2, v0, Lcom/chillyroomsdk/iapppay/IAppPayOrderRestorer;->m_dialog:Landroid/app/ProgressDialog; invoke-virtual {v2}, Landroid/app/ProgressDialog;->dismiss()V goto/16 :goto_b3 #跳转到cond_b3 #也就是说,上面v2不管是小于等于0,还是等于0,总要调到:cond_b3的[Java] 纯文本查看 复制代码
.line 189 :cond_b3 :goto_b3 return-void #这里返回空值了,并且是该方法结束了,就是支付失败[Java] 纯文本查看 复制代码
.method public static GetKeyHash()Ljava/lang/String; .registers 7 .prologue return-void #直接插入该代码,返回空值 const/4 v3, 0x0查看全部评分