火柴人联盟安卓下载版5支付成功后什么时候收费

火柴人联盟刷钱去哪个图 快速刷钱攻略_图文攻略_全通关攻略_高分攻略_百度攻略
火柴人联盟刷钱刷装备选择地图很关键。游戏中钻石都不是最重要的东西,反正有用的英雄就那么几个,倒是金币和装备非常让人头疼。因为同品同类型中的不同装备,在属性上都会有强弱之分。再加上强化点技能所需金币不菲。刷金币和提升装备是一个非常让人头疼的地方。其实刷钱刷装备毫无疑问都是选择三人副本的,只是根据玩家自身的强弱,玩家的选择也会有所区别。刷装备并没有什么太大的问题,就是第一章中按照等级来划分即可。要提到的是后期刷五星装备,要考虑到刷钱的问题。精彩内容,尽在百度攻略:因为从第二章开始,提升的就只有等级和每一轮刷完获得的金币奖励了。装备方面只会掉落五星装备。这时候玩家再刷五星装备就要考虑到刷钱的效率问题了,不能单纯的只刷第一章的最后一图。其实从一开始玩家刷钱要考虑的就只有效率问题,有时候宁愿选择刷低级一点的副本,只要刷的够快,完全会被后面钱多但是BOSS难打的副本来的快。精彩内容,尽在百度攻略:一般来说选择刷钱副本的原则就是,一个R技能能秒杀的最高级的副本。就比如第一章前四图的BOSS,都能一个R技能秒杀,那肯定选择刷第四图。当然如果结合刷装备的话,玩家就要重新考虑一下了。另外喜欢追求完美的玩家,在刷装备的道路上可能会有非常长的距离要走了。
火柴人联盟-相关攻略推荐
火柴人联盟-其他攻略
火柴人联盟-新手攻略
火柴人联盟-英雄攻略
火柴人联盟-武器装备[最新版]火柴人联盟v1.14.1去签名验证去广告Android内购破解(附smali篇幅有点长啊) - 六桥风月IT随笔 - CSDN博客
[最新版]火柴人联盟v1.14.1去签名验证去广告Android内购破解(附smali篇幅有点长啊)
授人以鱼不如授人以渔,谁将授吾以渔?&--by B.S. {:1_892:}
废话不多说了.先上图,分析修改说明随后附上.&
注: 文章排版是用的论坛Markdown编辑的(因我的博客是基于markdown),是有点不太好阅读,可以拉到一楼最下面左边有md的导航.
真机安装还是一直卡在&正在处理,请稍后......&的童鞋,请前往2楼下载我修复过的移动支付接口版本和以后更新的各种支付接口版本(可以手机点击下载在线安装)
百度网盘链接已重传重新分享不卡修复版,也可以去2楼下载在线安装.
其实在B.S.去签名内购下面的百度下载是个可以点击下载在线安装的最新修复版备用链接O(∩_∩)O哈哈~
---Creaked by&&B.S. 6/26/:40 PM
无聊练手,当作学习Android优秀源码的笔记
仅供学习研究,请勿用作商业用途,如若喜欢请支持正版!
最新版原程序:(v1.14.1)
B.S.去签名去广告内购破解版:(无限内购)
链接:&&密码: rt4r
链接:&&密码: r9sb
也可以去各大安卓市场搜索下载最新版本:(推荐支付接口比较熟悉的移动,咪咕游戏,爱游戏)
有图有真相:
运营商网络
1. 去签名验证:
不修改直接回编译后,是有签名验证的,检测提示盗版破解游戏.&
当然是先跑一遍原程序,看看logcat有没有敏感信息可以用;现在搜索字符串了,
signatures
getAPPSecretString
BLACK_NAME
找到第一条添加黑名单的工具类就是,向上回溯查看哪里引用了getAPPSecretString这个方法
.class public Lcn/mycompany/addblackname/utils/
.super Ljava/lang/O
.source &utils.java&
.method public static getAPPSecretString(Landroid/content/C)Ljava/lang/String;
& & .prologue
& & .line 21
& & invoke-virtual {p0}, Landroid/content/C-&getPackageName()Ljava/lang/S
& & move-result-object v4
& & .line 22
& & .local v4, &pkgname&:Ljava/lang/S
& & const-string v1, &&
& & return-object v1&&#去签名验证从:try_start_0开始到:catch_0,但里面的返回留着.直接返回空的字符串
.end method
去验证的修改方法很多种,还可以在下面的类里定位到check方法函数.
根据经验可以去看看onCreate有没可用的信息,一般初始化在这里有处理.
.class public Lcom/DBGame/DiabloLOL/DiabloLOL;
.super Lorg/cocos2dx/lib/Cocos2dxA
.source &DiabloLOL.java&
.method protected onCreate(Landroid/os/B)V
& & #前面还有若干代码
& & ###黑名单功能开始
& & .line 240
& & new-instance v0, Lcn/mycompany/addblackname/AddBlackName;
& & invoke-direct {v0, p0}, Lcn/mycompany/addblackname/AddBlackN-&&init&(Landroid/content/C)V
& & .line 241
& & .local v0, &blackName&:Lcn/mycompany/addblackname/AddBlackN
& & #invoke-static {}, Lcn/mycompany/addblackname/AddBlackN-&Check()V
& & ###黑名单功能结束
& & #后面还有若干代码
顺便广告的也可以看看能不能处理了
& & #前面还有若干代码
& & ###广告的初始化开始
& & .line 260
& & #invoke-static {p0, v7}, Lcn/cmgame/billing/api/game/main/T-&adIntervalInit(Landroid/app/ALcn/cmgame/billing/api/game/main/L)V
& & .line 262
& & #invoke-static {p0, v7}, Lcn/cmgame/billing/api/game/main/T-&adNativeInit(Landroid/app/ALcn/cmgame/billing/api/game/main/L)V
& & ###广告的初始化结束
& & #后面还有若干代码
看到Lcn/mycompany/addblackname/AddBlackN-&Check()V是在添加黑名单的类里, 查看方法,处理check()V
.method public static Check()V
& & .locals 6
& & .prologue
& & ######插入代码开始 coded by B.S.
& & const-string v0, &Lcn/mycompany/addblackname/AddBlackName;-&check()V \n&&-- by B.S.&
& & invoke-static {v0}, Lcom/android/BS/L-&LogStr(Ljava/lang/S)V
& & ######插入代码结束 coded by B.S.
& & return-void& &#直接返回使签名验证失效.
.end method
2. 去广告:
去除返回退出的横幅广告:
点返回按钮,logcat找到敏感字符
----- showInterAD --exit
反编译后,搜索
----- showInterAD
HANDLER_SHOW_INTER_AD
在下面类修改
.class public Lcom/DBGame/Common/BLH
.super Ljava/lang/O
.source &BLHelper.java&
不让他发送显示广告的消息
public static final int HANDLER_SHOW_INTER_AD = 211;
.field public static final HANDLER_SHOW_INTER_AD:I = 0xd3
.method public static showInterAD(Ljava/lang/S)V
& & .locals 6
& & .param p0, &tag&& & # Ljava/lang/String;
& & .prologue
& & .line 360
& & const-string v3, &ad&
& & new-instance v4, Ljava/lang/StringB
& & invoke-direct {v4}, Ljava/lang/StringB-&&init&()V
& & const-string v5, &----- showInterAD --&
& & invoke-virtual {v4, v5}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
& & move-result-object v4
& & invoke-virtual {v4, p0}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
& & move-result-object v4
& & invoke-virtual {v4}, Ljava/lang/StringB-&toString()Ljava/lang/S
& & move-result-object v4
& & invoke-static {v3, v4}, Landroid/util/L-&w(Ljava/lang/SLjava/lang/S)I
& & .line 361
& & const/4 v1, 0x0
& & .line 362
& & .local v1, &index&:I
& & const/4 v0, 0x0
& & .local v0, &i&:I
& & :goto_0
& & sget-object v3, Lcom/DBGame/Common/BLH-&adTags:[Ljava/lang/S
& & array-length v3, v3
& & if-ge v0, v3, :cond_0
& & .line 363
& & sget-object v3, Lcom/DBGame/Common/BLH-&adTags:[Ljava/lang/S
& & aget-object v3, v3, v0
& & invoke-virtual {v3, p0}, Ljava/lang/S-&equals(Ljava/lang/O)Z
& & move-result v3
& & if-eqz v3, :cond_1
& & .line 364
& & move v1, v0
& & .line 368
& & :cond_0
& & new-instance v2, Landroid/os/M
& & invoke-direct {v2}, Landroid/os/M-&&init&()V
& & .line 369
& & .local v2, &msg&:Landroid/os/M
& & const/16 v3, 0xd3
& & iput v3, v2, Landroid/os/M-&what:I
& & .line 370
& & iput v1, v2, Landroid/os/M-&arg1:I
& & .line 371
& & sget-object v3, Lcom/DBGame/Common/BLH-&sContext:Lcom/DBGame/DiabloLOL/DiabloLOL;
& & #去退出广告,不让他发送显示广告的消息,下面一句给注释或删掉
& & #invoke-virtual {v3, v2}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&sendMessage(Landroid/os/M)V
& & .line 372
& & return-void
& & .line 362
& & .end local v2& & # &msg&:Landroid/os/M
& & :cond_1
& & add-int/lit8 v0, v0, 0x1
& & goto :goto_0
.end method
去除选英雄和副本的横幅广告:
public static final int HANDLER_SHOWBANNER = 200;
public static final int HANDLER_HIDEBANNER = 210;
case DiabloLOL.HANDLER_HIDEBANNER :
& && && && && && &&&DiabloLOL.this.hideBanner();
& && && && && && &&&DiabloLOL.this.showBanner();
修改下面类里的方法
.class public Lcom/DBGame/Common/BLH
.super Ljava/lang/O
.source &BLHelper.java&
.method public static showBanner(Ljava/lang/S)V
& & .locals 2
& & .param p0, &tag&& & # Ljava/lang/String;
& & .prologue
& & .line 375
& & new-instance v0, Landroid/os/M
& & invoke-direct {v0}, Landroid/os/M-&&init&()V
& & .line 376
& & .local v0, &msg&:Landroid/os/M
& & const/16 v1, 0xd2&&#const/16 v1, 0xc8&&#显示横幅广告的发送消息的代码 0xc8 200 休改为 0xd2 210& &隐藏横幅
& & iput v1, v0, Landroid/os/M-&what:I
& & .line 377
& & sget-object v1, Lcom/DBGame/Common/BLH-&sContext:Lcom/DBGame/DiabloLOL/DiabloLOL;
& & #去横幅广告,或者不让他发送显示广告的消息,
& & invoke-virtual {v1, v0}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&sendMessage(Landroid/os/M)V
& & .line 378
& & return-void
.end method
可以再去下面类里看看,消息处理的地方 .method public handleMessage(Landroid/os/M)V
.class Lcom/DBGame/DiabloLOL/DiabloLOL$3;
.super Landroid/os/H
.source &DiabloLOL.java&
& & case 200:
& && &return;
& & case 210:
& && &return;
& & case 211:
& && &Log.e(&qq&, &HANDLER_SHOW_INTER_AD==========&);
& && &return;
对应的smali
& & .line 650
& & #去除显示横幅sswitch_8
& & :sswitch_8
& & iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$3;-&this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;
& & # invokes: Lcom/DBGame/DiabloLOL/DiabloLOL;-&showBanner()V
& & #invoke-static {v2}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&access$400(Lcom/DBGame/DiabloLOL/DiabloLOL;)V
& & goto :goto_0
& & .line 654
& & #去除隐藏横幅sswitch_9
& & :sswitch_9
& & iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$3;-&this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;
& & # invokes: Lcom/DBGame/DiabloLOL/DiabloLOL;-&hideBanner()V
& & #invoke-static {v2}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&access$500(Lcom/DBGame/DiabloLOL/DiabloLOL;)V
& & goto :goto_0
& & .line 658
& & #去除显示嵌入式广告sswitch_a
& & :sswitch_a
& & const-string v2, &qq&
& & const-string v3, &HANDLER_SHOW_INTER_AD==========&
& & invoke-static {v2, v3}, Landroid/util/L-&e(Ljava/lang/SLjava/lang/S)I
& & .line 659
& & iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$3;-&this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;
& & iget v3, p1, Landroid/os/M-&arg1:I
& & # invokes: Lcom/DBGame/DiabloLOL/DiabloLOL;-&showInterAd(I)V
& & #invoke-static {v2, v3}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&access$600(Lcom/DBGame/DiabloLOL/DiabloLOL;I)V
& & goto/16 :goto_0
消息处理的代码如下:
& && &&&public void handleMessage(Message msg) {
& && && && &switch (msg.what) {
& && && && && & case 10:
& && && && && && &&&DiabloLOL.this.exitGame();
& && && && && && &&&return;
& && && && && & case 11:
& && && && && && &&&((ClipboardManager) Cocos2dxActivity.getContext().getSystemService(&clipboard&)).setPrimaryClip(ClipData.newPlainText(MiniDefine.ax, BLHelper.copyString));
& && && && && && &&&Toast.makeText(DiabloLOL.this, &拷贝成功!&, 0).show();
& && && && && && &&&return;
& && && && && & case 30:
& && && && && && &&&if (BLHelper.IPAYTAYPE == 1) {
& && && && && && && && &DiabloLOL.this.payInDuanXin();
& && && && && && && && &return;
& && && && && && &&&} else if (BLHelper.IPAYTAYPE != 2 && DiabloLOL.RECHARGE_CHANNELS.indexOf(String.valueOf(DiabloLOL.this.iFromPay)) != -1) {
& && && && && && && && &DiabloLOL.this.payInDuanXin();
& && && && && && && && &return;
& && && && && && &&&} else {
& && && && && && && && &return;
& && && && && && &&&}
& && && && && & case 102:
& && && && && && &&&OGPub.Instance().closeLoad();
& && && && && && &&&return;
& && && && && & case 200:
& && && && && && &&&DiabloLOL.this.showBanner();
& && && && && && &&&return;
& && && && && & case DiabloLOL.HANDLER_HIDEBANNER :
& && && && && && &&&DiabloLOL.this.hideBanner();
& && && && && && &&&return;
& && && && && & case DiabloLOL.HANDLER_SHOW_INTER_AD :
& && && && && && &&&Log.e(&qq&, &HANDLER_SHOW_INTER_AD==========&);
& && && && && && &&&DiabloLOL.this.showInterAd(msg.arg1);
& && && && && && &&&return;
& && && && && & case DiabloLOL.HANDLER_REYUN_EXIT :
& && && && && && &&&ReYun.exitSdk();
& && && && && && &&&return;
& && && && && & case DiabloLOL.HANDLER_SHOWSHARE :
& && && && && && &&&DiabloLOL.this.showShareDialog();
& && && && && && &&&return;
& && && && && & case DiabloLOL.HANDLER_SAVEPIC :
& && && && && && &&&BLHelper.savePic();
& && && && && && &&&return;
& && && && && & case DiabloLOL.HANDLER_MONTHCONTRA :
& && && && && && &&&DiabloLOL.this.purchaseMonthlyContract(msg.arg1);
& && && && && && &&&return;
& && && && && & case DiabloLOL.HANDLER_HIDEWEBDATA :
& && && && && && &&&BLHelper.webout();
& && && && && && &&&return;
& && && && && & default:
& && && && && && &&&return;
& && && && &}
顺便也解决下其他的函数, .method private showBanner()V和.method private showInterAd(I)V 处理掉直接返回
.class public Lcom/DBGame/DiabloLOL/DiabloLOL;
.super Lorg/cocos2dx/lib/Cocos2dxA
.source &DiabloLOL.java&
.method private showBanner()V
& & .locals 5
& & .prologue
& & .line 338
& & return-void& & #直接返回
& & const v1, 0x3e4ccccd& & # 0.2f
& & const v2, 0x3f4ccccd& & # 0.8f
& & const v3, 0x3f19999a& & # 0.6f
& & const v4, 0x3e19999a& & # 0.15f
& & :try_start_0
& & invoke-static {p0, v1, v2, v3, v4}, Lcn/cmgame/billing/api/game/main/T-&adNativeShow(Landroid/app/AFFFF)V
& & :try_end_0
& & .catch Ljava/lang/E {:try_start_0 .. :try_end_0} :catch_0
& & .line 342
& & :goto_0
& & return-void
& & .line 339
& & :catch_0
& & move-exception v0
& & .line 340
& & .local v0, &e&:Ljava/lang/E
& & invoke-virtual {v0}, Ljava/lang/E-&printStackTrace()V
& & goto :goto_0
.end method
.method private showInterAd(I)V
& & .locals 1
& & .param p1, &index&& & # I
& & .prologue
& & .line 354
& & return-void&&#直接返回
& & :try_start_0
& & invoke-static {p0, p1}, Lcn/cmgame/billing/api/game/main/T-&adIntervalShow(Landroid/app/AI)V
& & :try_end_0
& & .catch Ljava/lang/E {:try_start_0 .. :try_end_0} :catch_0
& & .line 358
& & :goto_0
& & return-void
& & .line 355
& & :catch_0
& & move-exception v0
& & .line 356
& & .local v0, &e&:Ljava/lang/E
& & invoke-virtual {v0}, Ljava/lang/E-&printStackTrace()V
& & goto :goto_0
.end method
3. 内购破解:
去除可能会产生费用的危险权限:
AndroidManifest.xml里搜索
android.permission.SEND_SMS
android.permission.CALL_PHONE
&uses-permission android:name=&android.permission.SEND_SMS&/&
&uses-permission android:name=&android.permission.CALL_PHONE&/&
电信支付接口:
logcat字符串定位,
Egame支付成功
Egame支付Cancel
搜索上面字符串,向上分析,回溯分析.
.class public Lcn/egame/terminal/paysdk/EgameP
.super Ljava/lang/O
.source &EgamePay.java&
.method public static pay(Landroid/app/ALjava/util/MLcn/egame/terminal/paysdk/EgamePayL)V
& & .locals 1
& & .param p0, &activity&& & # Landroid/app/Activity;
& & .param p2, &listener&& & # Lcn/egame/terminal/paysdk/EgamePayL
& & .annotation system Ldalvik/annotation/S
& && &&&value = {
& && && && &&(&,
& && && && &&Landroid/app/A&,
& && && && &&Ljava/util/Map&,
& && && && &&&&,
& && && && &&Ljava/lang/S&,
& && && && &&Ljava/lang/S&,
& && && && &&&;&,
& && && && &&Lcn/egame/terminal/paysdk/EgamePayL&,
& && && && &&)V&
& & .end annotation
& & .prologue
& & .line 78
& & #注意paySuccess这个函数只有一个参数.method public abstract paySuccess(Ljava/util/M)V
& & #而失败payFailed这个函数有第二个整型参数 .method public abstract payFailed(Ljava/util/MI)V
& & # Egame支付成功
& & invoke-interface {p2, p1}, Lcn/egame/terminal/paysdk/EgamePayL-&paySuccess(Ljava/util/M)V
& & return-void
.end method
还可以用paySuccess函数体代替payCancel和payFailed.在下面的类里,
.class Lcom/DBGame/DiabloLOL/DiabloLOL$6;
.super Ljava/lang/O
.source &DiabloLOL.java&
联通支付接口:
logcat字符串定位啊,
Unicom支付成功
Unicom支付cancel
在下面类修改处理,可以用goto大法或者switch大法.
.class Lcom/DBGame/DiabloLOL/DiabloLOL$4;
.super Ljava/lang/O
.source &DiabloLOL.java&
.method public PayResult(Ljava/lang/SIILjava/lang/S)V
& & .prologue
& & .line 694
& & goto&&:pswitch_0&&#联通支付接口,直接JMP无条件跳到支付成功
& & packed-switch p2, :pswitch_data_0
移动支付接口:
logcat定位字符串,
购买道具:[
在下面类修改
.class Lcom/DBGame/DiabloLOL/DiabloLOL$5;
.super Ljava/lang/O
.source &DiabloLOL.java&
.method public onResult(ILjava/lang/SLjava/lang/O)V
& & .prologue
& & .line 735
& & const-string v0, &&
& & .line 736
& & .local v0, &result&:Ljava/lang/String;
& & goto :pswitch_0& &#移动支付接口,直接JMP无条件跳到支付成功
& & packed-switch p1, :pswitch_data_0
4. 统一支付接口:
统一为电信的吧.可以直接成功,没那么多弹窗支付
定位字符串
电信初始化成功
.method protected onCreate(Landroid/os/B)V
& & .line 254
& & invoke-direct {p0}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&getSimType()I
& & move-result v4
& & iput v4, p0, Lcom/DBGame/DiabloLOL/DiabloLOL;-&iFromPay:I
进入getSimType方法函数处理结果然后赋值给iFromPay
& & private int getSimType() {
& && &&&int type = 0;
& && &&&String sOperator = ((TelephonyManager) getSystemService(&phone&)).getSimOperator().trim();
& && &&&if (sOperator == null || sOperator.equals(&&)) {
& && && && &return 0;
& && &&&switch (Integer.valueOf(sOperator).intValue()) {
& && && && &case 46000:
& && && && &case 46002:
& && && && &case 46007:
& && && && &case 46020:
& && && && && & type = 0;
& && && && && & break;
& && && && &case 46001:
& && && && &case 46006:
& && && && && & type = 2;
& && && && && & break;
& && && && &case 46003:
& && && && &case 46005:
& && && && &case 46011:
& && && && && & type = 1;
& && && && && & break;
& && &&&return
直接return 1;伪装为电信,支付接口统一完毕.请参看本文开头的SIM类型表格
我第一次比较麻烦的改法如下,
.method private getSimType()I
& & .locals 6
& & .prologue
& & .line 267
& & const/4 v3, 0x1&&#const/4 v3, 0x0&&#初始化为0是移动
& & .line 268
& & .local v3, &type&:I
& & const-string v5, &phone&
& & .line 269
& & invoke-virtual {p0, v5}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&getSystemService(Ljava/lang/S)Ljava/lang/O
& & move-result-object v2
& & check-cast v2, Landroid/telephony/TelephonyM
& & .line 270
& & .local v2, &tm&:Landroid/telephony/TelephonyM
& & invoke-virtual {v2}, Landroid/telephony/TelephonyM-&getSimOperator()Ljava/lang/S
& & move-result-object v5
& & invoke-virtual {v5}, Ljava/lang/S-&trim()Ljava/lang/S
& & move-result-object v1
& & ######插入自定义log开始
& & invoke-static {v1}, Lcom/android/BS/L-&LogStr(Ljava/lang/S)V
& & ######插入自定义log结束
& & ######插入自定义log开始&&
& & const-string v0, &\n\u65e0\u\u8d2dB.S.\u\u7248\n www.appleos.xyz \n-- by B.S.&
& & invoke-static {v0}, Lcom/android/BS/L-&LogStr(Ljava/lang/S)V
& & ######插入自定义log结束
& & .line 271
& & .local v1, &sOperator&:Ljava/lang/S
& & if-eqz v1, :cond_0
& & const-string v5, &&
& & invoke-virtual {v1, v5}, Ljava/lang/S-&equals(Ljava/lang/O)Z
& & move-result v5
& & if-eqz v5, :cond_1
& & :cond_0
& & move v4, v3& & #移动为0
& & .line 295
& & .end local v3& & # &type&:I
& & .local v4, &type&:I
& & :goto_0
& & return v4
& & .line 274
& & .end local v4& & # &type&:I
& & .restart local v3& & # &type&:I
& & :cond_1
& & invoke-static {v1}, Ljava/lang/I-&valueOf(Ljava/lang/S)Ljava/lang/I
& & move-result-object v5
& & invoke-virtual {v5}, Ljava/lang/I-&intValue()I
& & move-result v0
& & .line 275
& & .local v0, &sCode&:I
& & packed-switch v0, :pswitch_data_0
& & :goto_1
& & :pswitch_0
& & move v4, v3
& & .line 295
& & .end local v3& & # &type&:I
& & .restart local v4& & # &type&:I
& & goto :goto_0
& & .line 280
& & .end local v4& & # &type&:I
& & .restart local v3& & # &type&:I
& & :pswitch_1
& & const/4 v3, 0x1&&#const/4 v3, 0x0& &#移动
& & .line 281
& & goto :goto_1
& & .line 284
& & :pswitch_2
& & const/4 v3, 0x1&&#const/4 v3, 0x2& &#联通
& & .line 285
& & goto :goto_1
& & .line 289
& & :pswitch_3
& & const/4 v3, 0x1& & #电信
& & .line 290
& & goto :goto_1
& & .line 275
& & :pswitch_data_0
& & .packed-switch 0xb3b0& &
& && &&&:pswitch_1
& && &&&:pswitch_2
& && &&&:pswitch_1
& && &&&:pswitch_3
& && &&&:pswitch_0
& && &&&:pswitch_3
& && &&&:pswitch_2
& && &&&:pswitch_1
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_3
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_0
& && &&&:pswitch_1
& & .end packed-switch
.end method
也可以直接return 0,伪装为移动,统一为移动支付.
.method private getSimType()I
& & .locals 6
& & ###统一为移动短信支付接口直接返回为0
& & #const/4 v4, 0x0
& & #return v4
.end method
然后处理移动短信支付的函数方法payInYidong(),移动短信支付的另外一种破解方法,
.class Lcom/DBGame/DiabloLOL/DiabloLOL$5;
.super Ljava/lang/O
.source &DiabloLOL.java&
把移动购买成功的代码,就是:pswitch_0里两个goto :goto_0之间的有效代码,直接搬到payInYidong()里,放到:cond_0和return-void之间.
& & .line 755
& & :goto_0
& & invoke-static {}, Lcom/DBGame/Common/BLH-&closeShieldLayer()V
& & .line 756
& & return-void
& & .line 738
& & :pswitch_0
& & const-string v1, &10&
& & invoke-virtual {p3}, Ljava/lang/O-&toString()Ljava/lang/S
& & move-result-object v2
& & invoke-virtual {v1, v2}, Ljava/lang/S-&equals(Ljava/lang/O)Z
& & move-result v1
& & if-eqz v1, :cond_0
& & .line 739
& & const-string v0, &\u77ed\u4fe1\u8ba1\u8d39\u8d85\u65f6&
& & goto :goto_0
& & .line 741
& & :cond_0&&###从下面一句开始购买成功,不弹窗.
& & new-instance v1, Ljava/lang/StringB
& & invoke-direct {v1}, Ljava/lang/StringB-&&init&()V
& & const-string v2, &\u8d2d\u4e70\u\uff1a[&
& & invoke-virtual {v1, v2}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
& & move-result-object v1
& & iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;-&this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;&&#和下一语句合并
& & iget-object v2, v2, Lcom/DBGame/DiabloLOL/DiabloLOL;-&PAY_NAME:[Ljava/lang/S
& & iget-object v3, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;-&this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;&&#和下一语句合并
& & # getter for: Lcom/DBGame/DiabloLOL/DiabloLOL;-&mPayIndex:I
& & invoke-static {v3}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&access$800(Lcom/DBGame/DiabloLOL/DiabloLOL;)I
& & move-result v3
& & aget-object v2, v2, v3
& & invoke-virtual {v1, v2}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
& & move-result-object v1
& & const-string v2, &] \uf\uff01&
& & invoke-virtual {v1, v2}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
& & move-result-object v1
& & invoke-virtual {v1}, Ljava/lang/StringB-&toString()Ljava/lang/S
& & move-result-object v0
& & .line 742
& & iget-object v1, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;-&this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;&&#和下一语句合并
& & iget-object v1, v1, Lcom/DBGame/DiabloLOL/DiabloLOL;-&PRO_ID_Str:[Ljava/lang/S
& & iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;-&this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;&&#和下一语句合并
& & # getter for: Lcom/DBGame/DiabloLOL/DiabloLOL;-&mPayIndex:I
& & invoke-static {v2}, Lcom/DBGame/DiabloLOL/DiabloLOL;-&access$800(Lcom/DBGame/DiabloLOL/DiabloLOL;)I
& & move-result v2
& & aget-object v1, v1, v2
& & const/4 v2, 0x1
& & invoke-static {v1, v2}, Lcom/DBGame/Common/BLH-&purchaseComplete(Ljava/lang/SI)V
& & goto :goto_0&&###购买成功不弹窗到goto那边的closeShieldLayer语句然后返回结束
& & .line 748
& & :pswitch_1
最后应该变为java源码如下面的样子:
private void payInYidong() {
& && &&&if (LOLConstant.sCMCC_OPEN == 0) {
& && && && &BLHelper.showShieldLayer(&正在处理,请稍后.....&);
& && &&&String str = &购买道具:[& + this.PAY_NAME[this.mPayIndex] + &] 成功!&;
& && &&&BLHelper.purchaseComplete(this.PRO_ID_Str[this.mPayIndex], 1);
& && &&&BLHelper.closeShieldLayer();
有童靴反应真机内购,会卡在&正在处理,请稍后.....&,其实这个要等一会的,等一会儿就消失了. 不愿意等太长时间,那么就干脆干掉她,如下,只要上面说的两个goto :goto_0夹着那段代码,另外记得这里面的代码,需要合并处理this指针问题哟.
private void payInYidong() {
& && &&&String str = &购买道具:[& + this.PAY_NAME[this.mPayIndex] + &] 成功!&;
& && &&&BLHelper.purchaseComplete(this.PRO_ID_Str[this.mPayIndex], 1);
几种支付方式如下:(短信,联通,移动,Egame支付)
其中电信用的是Egame支付
& & private void payInDuanXin() {
& && &&&if (RECHARGE_CHANNELS.indexOf(String.valueOf(this.iFromPay)) != -1) {
& && && && &if (this.iFromPay == 2) {
& && && && && & payInUnicom();
& && && && &} else if (this.iFromPay == 0) {
& && && && && & payInYidong();
& && && && &} else if (this.iFromPay == 1) {
& && && && && & payInEgame();
& && && && &}
& & private void payInUnicom() {
& && &&&Utils.getInstances().pay(this, this.PAY_CODE_UNICOM[this.mPayIndex], new UnipayPayResultListener() {
& && && && &public void PayResult(String arg0, int arg1, int arg2, String arg3) {
& && && && && & switch (arg1) {
& && && && && && &&&case 1:
& && && && && && && && &DiabloLOL.this.setPayment();
& && && && && && && && &BLHelper.purchaseComplete(DiabloLOL.this.PRO_ID_Str[DiabloLOL.this.mPayIndex], 1);
& && && && && && && && &BLHelper.closeShieldLayer();
& && && && && && && && &Log.e(&qq&, &Unicom支付成功&);
& && && && && && && && &return;
& && && && && && &&&case 2:
& && && && && && && && &BLHelper.closeShieldLayer();
& && && && && && && && &Log.e(&qq&, &Unicom支付Fail&);
& && && && && && && && &return;
& && && && && && &&&case 3:
& && && && && && && && &BLHelper.closeShieldLayer();
& && && && && && && && &Log.e(&qq&, &Unicom支付cancel&);
& && && && && && && && &return;
& && && && && && &&&default:
& && && && && && && && &Log.e(&qq&, &Unicom支付Default&);
& && && && && && && && &return;
& && && && && & }
& && && && &}
& && &&&});
& & private void payInYidong() {
& && &&&if (LOLConstant.sCMCC_OPEN == 0) {
& && && && &BLHelper.showShieldLayer(&正在处理,请稍后.....&);
& && &&&GameInterface.doBilling(this, true, true, this.PAY_CODE_MM[this.mPayIndex], null, this.payCallback);
& & public void payInEgame() {
& && &&&HashMap&String, String& payParams = new HashMap();
& && &&&payParams.put(EgamePay.PAY_PARAMS_KEY_TOOLS_ALIAS, this.PAY_CODE_SMS[this.mPayIndex]);
& && &&&if (this.iOpen == -1) {
& && && && &this.iOpen = BLHelper.getOpenCTCC(&ctcc&, this, true);
& && &&&Log.e(&qq&, &iOpen=& + this.iOpen);
& && &&&if (this.iOpen == 1) {
& && && && &this.gameManager.gameConfig.PaySdkUIForCP = 1;
& && &&&} else {
& && && && &this.gameManager.gameConfig.PaySdkUIForCP = 0;
& && &&&this.gameManager.EGamePay(payParams, new EgamePayListener() {
& && && && &public void paySuccess(Map&String, String& map) {
& && && && && & DiabloLOL.this.setPayment();
& && && && && & BLHelper.purchaseComplete(DiabloLOL.this.PRO_ID_Str[DiabloLOL.this.mPayIndex], 1);
& && && && && & BLHelper.closeShieldLayer();
& && && && && & Log.e(&qq&, &Egame支付成功&);
& && && && && & DiabloLOL.this.mPayIndex = -1;
& && && && &}
& && && && &public void payFailed(Map&String, String& map, int arg1) {
& && && && && & BLHelper.closeShieldLayer();
& && && && && & Log.e(&qq&, &Egame支付Fail==& + arg1);
& && && && && & DiabloLOL.this.mPayIndex = -1;
& && && && &}
& && && && &public void payCancel(Map&String, String& map) {
& && && && && & BLHelper.closeShieldLayer();
& && && && && & Log.e(&qq&, &Egame支付Cancel&);
& && && && && & DiabloLOL.this.mPayIndex = -1;
& && && && &}
& && &&&});
我的热门文章
即使是一小步也想与你分享

我要回帖

更多关于 火柴人联盟安卓下载 的文章

 

随机推荐