錦州市廣廈電腦維修|上門(mén)維修電腦|上門(mén)做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁(yè)
topFlag3 收藏本站
 
maojin003 首 頁(yè) 公司介紹 服務(wù)項(xiàng)目 服務(wù)報(bào)價(jià) 維修流程 IT外包服務(wù) 服務(wù)器維護(hù) 技術(shù)文章 常見(jiàn)故障
錦州市廣廈電腦維修|上門(mén)維修電腦|上門(mén)做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù)技術(shù)文章
[最新版]火柴人聯(lián)盟v1.14.1去簽名驗(yàn)證去廣告Android內(nèi)購(gòu)破解

作者: dryzh  日期:2017-06-30 20:19:19   來(lái)源: 本站整理

授人以魚(yú)不如授人以漁,誰(shuí)將授吾以漁? --by B.S. {:1_892:}
廢話(huà)不多說(shuō)了.先上圖,分析修改說(shuō)明隨后附上. 
注: 文章排版是用的論壇Markdown編輯的(因我的博客是基于markdown),是有點(diǎn)不太好閱讀,可以拉到一樓最下面左邊有md的導(dǎo)航.
真機(jī)安裝還是一直卡在"正在處理,請(qǐng)稍后......"的童鞋,請(qǐng)前往2樓下載我修復(fù)過(guò)的移動(dòng)支付接口版本和以后更新的各種支付接

口版本(可以手機(jī)點(diǎn)擊下載在線(xiàn)安裝)
其實(shí)在B.S.去簽名去廣告內(nèi)購(gòu)破解版下面的百度下載是個(gè)可以點(diǎn)擊下載在線(xiàn)安裝的備用鏈接O(∩_∩)O哈哈~


 

 

---Creaked by  B.S. 6/26/2017 9:22:40 PM

無(wú)聊練手,當(dāng)作學(xué)習(xí)Android優(yōu)秀源碼的筆記

僅供學(xué)習(xí)研究,請(qǐng)勿用作商業(yè)用途,如若喜歡請(qǐng)支持正版!

最新版原程序:(v1.14.1)

百度下載

火柴人聯(lián)盟官網(wǎng): http://huo.hoolaigames.com/

B.S.去簽名去廣告內(nèi)購(gòu)破解版:(無(wú)限內(nèi)購(gòu))

百度下載 鏈接: https://pan.baidu.com/s/1qXTbuVU 密碼: r9sb

有確認(rèn)支付的電信接口內(nèi)購(gòu)版

也可以去各大安卓市場(chǎng)搜索下載最新版本:(推薦支付接口比較熟悉的移動(dòng),咪咕游戲,愛(ài)游戲)

愛(ài)游戲: http://www.play.cn/

咪咕游戲: http://g.10086.cn/

中國(guó)移動(dòng)應(yīng)用商城: http://mm.10086.cn/android

騰訊應(yīng)用寶: http://android.myapp.com/

360手機(jī)助手: http://zhushou.360.cn/

百度旗下安卓市場(chǎng): http://apk.hiapk.com/

安智市場(chǎng): http://www.anzhi.com/

有圖有真相:

運(yùn)營(yíng)商網(wǎng)絡(luò) 特征碼 備注
中國(guó)移動(dòng) 46000、46002、46007、46020  
中國(guó)聯(lián)通 46001、46006、46010  
中國(guó)電信 46003、46005、46011  

1. 去簽名驗(yàn)證:

Android killer不修改直接回編譯后,是有簽名驗(yàn)證的,檢測(cè)提示盜版破解游戲.簽名驗(yàn)證盜版提示

當(dāng)然是先跑一遍原程序,看看logcat有沒(méi)有敏感信息可以用;現(xiàn)在搜索字符串了,

 

signatures

getAPPSecretString

有侵權(quán)

BLACK_NAME

找到第一條添加黑名單的工具類(lèi)就是,向上回溯查看哪里引用了getAPPSecretString這個(gè)方法

.class public Lcn/mycompany/addblackname/utils/utils;

.super Ljava/lang/Object;

.source "utils.java"

.method public static getAPPSecretString(Landroid/content/Context;)Ljava/lang/String;      .prologue     .line 21     invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;      move-result-object v4      .line 22     .local v4, "pkgname":Ljava/lang/String;     const-string v1, ""      return-object v1  #去簽名驗(yàn)證從:try_start_0開(kāi)始到:catch_0,但里面的返回留著.直接返回空的字符串  .end method

去驗(yàn)證的修改方法很多種,還可以在下面的類(lèi)里定位到check方法函數(shù).

根據(jù)經(jīng)驗(yàn)可以去看看onCreate有沒(méi)可用的信息,一般初始化在這里有處理.

.class public Lcom/DBGame/DiabloLOL/DiabloLOL;

.super Lorg/cocos2dx/lib/Cocos2dxActivity;

.source "DiabloLOL.java"

.method protected onCreate(Landroid/os/Bundle;)V      #前面還有若干代碼     ###黑名單功能開(kāi)始     .line 240      new-instance v0, Lcn/mycompany/addblackname/AddBlackName;      invoke-direct {v0, p0}, Lcn/mycompany/addblackname/AddBlackName;-><init>(Landroid/content/Context;)V      .line 241     .local v0, "blackName":Lcn/mycompany/addblackname/AddBlackName;     #invoke-static {}, Lcn/mycompany/addblackname/AddBlackName;->Check()V     ###黑名單功能結(jié)束     #后面還有若干代碼 

順便廣告的也可以看看能不能處理了

    #前面還有若干代碼     ###廣告的初始化開(kāi)始     .line 260     #invoke-static {p0, v7}, Lcn/cmgame/billing/api/game/main/Tool;->adIntervalInit(Landroid/app/Activity;Lcn/cmgame/billing/api/game/main/Listener;)V      .line 262     #invoke-static {p0, v7}, Lcn/cmgame/billing/api/game/main/Tool;->adNativeInit(Landroid/app/Activity;Lcn/cmgame/billing/api/game/main/Listener;)V     ###廣告的初始化結(jié)束     #后面還有若干代碼 

看到Lcn/mycompany/addblackname/AddBlackName;->Check()V是在添加黑名單的類(lèi)里, 查看方法,處理check()V

.method public static Check()V     .locals 6      .prologue     ######插入代碼開(kāi)始 coded by B.S.      const-string v0, "Lcn/mycompany/addblackname/AddBlackName;->check()V \n  -- by B.S."      invoke-static {v0}, Lcom/android/BS/Log;->LogStr(Ljava/lang/String;)V      ######插入代碼結(jié)束 coded by B.S.     return-void   #直接返回使簽名驗(yàn)證失效. .end method

2. 去廣告:

去除返回退出的橫幅廣告:

點(diǎn)返回按鈕,logcat找到敏感字符

----- showInterAD --exit

反編譯后,搜索

----- showInterAD

HANDLER_SHOW_INTER_AD

在下面類(lèi)修改

.class public Lcom/DBGame/Common/BLHelper;

.super Ljava/lang/Object;

.source "BLHelper.java"

不讓他發(fā)送顯示廣告的消息

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/String;)V     .locals 6     .param p0, "tag"    # Ljava/lang/String;      .prologue     .line 360     const-string v3, "ad"      new-instance v4, Ljava/lang/StringBuilder;      invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V      const-string v5, "----- showInterAD --"      invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;      move-result-object v4      invoke-virtual {v4, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;      move-result-object v4      invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;      move-result-object v4      invoke-static {v3, v4}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)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/BLHelper;->adTags:[Ljava/lang/String;      array-length v3, v3      if-ge v0, v3, :cond_0      .line 363     sget-object v3, Lcom/DBGame/Common/BLHelper;->adTags:[Ljava/lang/String;      aget-object v3, v3, v0      invoke-virtual {v3, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z      move-result v3      if-eqz v3, :cond_1      .line 364     move v1, v0      .line 368     :cond_0     new-instance v2, Landroid/os/Message;      invoke-direct {v2}, Landroid/os/Message;-><init>()V      .line 369     .local v2, "msg":Landroid/os/Message;     const/16 v3, 0xd3      iput v3, v2, Landroid/os/Message;->what:I      .line 370     iput v1, v2, Landroid/os/Message;->arg1:I      .line 371     sget-object v3, Lcom/DBGame/Common/BLHelper;->sContext:Lcom/DBGame/DiabloLOL/DiabloLOL;     #去退出廣告,不讓他發(fā)送顯示廣告的消息,下面一句給注釋或刪掉     #invoke-virtual {v3, v2}, Lcom/DBGame/DiabloLOL/DiabloLOL;->sendMessage(Landroid/os/Message;)V      .line 372     return-void      .line 362     .end local v2    # "msg":Landroid/os/Message;     :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 /*210*/:                     DiabloLOL.this.hideBanner(); case 200:                     DiabloLOL.this.showBanner(); 

修改下面類(lèi)里的方法

.class public Lcom/DBGame/Common/BLHelper;

.super Ljava/lang/Object;

.source "BLHelper.java"

.method public static showBanner(Ljava/lang/String;)V     .locals 2     .param p0, "tag"    # Ljava/lang/String;      .prologue     .line 375     new-instance v0, Landroid/os/Message;      invoke-direct {v0}, Landroid/os/Message;-><init>()V      .line 376     .local v0, "msg":Landroid/os/Message;     const/16 v1, 0xd2  #const/16 v1, 0xc8  #顯示橫幅廣告的發(fā)送消息的代碼 0xc8 200 休改為 0xd2 210   隱藏橫幅      iput v1, v0, Landroid/os/Message;->what:I      .line 377     sget-object v1, Lcom/DBGame/Common/BLHelper;->sContext:Lcom/DBGame/DiabloLOL/DiabloLOL;      #去橫幅廣告,或者不讓他發(fā)送顯示廣告的消息,     invoke-virtual {v1, v0}, Lcom/DBGame/DiabloLOL/DiabloLOL;->sendMessage(Landroid/os/Message;)V      .line 378     return-void .end method

可以再去下面類(lèi)里看看,消息處理的地方 .method public handleMessage(Landroid/os/Message;)V

.class Lcom/DBGame/DiabloLOL/DiabloLOL$3;

.super Landroid/os/Handler;

.source "DiabloLOL.java"

    case 200:        //DiabloLOL.access$400(this.this$0);       return;     case 210:        //DiabloLOL.access$500(this.this$0);       return;     case 211:        Log.e("qq", "HANDLER_SHOW_INTER_AD==========");       //DiabloLOL.access$600(this.this$0, paramMessage.arg1);       return;

對(duì)應(yīng)的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/Log;->e(Ljava/lang/String;Ljava/lang/String;)I      .line 659     iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$3;->this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;      iget v3, p1, Landroid/os/Message;->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 /*210*/:                     DiabloLOL.this.hideBanner();                     return;                 case DiabloLOL.HANDLER_SHOW_INTER_AD /*211*/:                     Log.e("qq", "HANDLER_SHOW_INTER_AD==========");                     DiabloLOL.this.showInterAd(msg.arg1);                     return;                 case DiabloLOL.HANDLER_REYUN_EXIT /*400*/:                     ReYun.exitSdk();                     return;                 case DiabloLOL.HANDLER_SHOWSHARE /*420*/:                     DiabloLOL.this.showShareDialog();                     return;                 case DiabloLOL.HANDLER_SAVEPIC /*450*/:                     BLHelper.savePic();                     return;                 case DiabloLOL.HANDLER_MONTHCONTRA /*470*/:                     DiabloLOL.this.purchaseMonthlyContract(msg.arg1);                     return;                 case DiabloLOL.HANDLER_HIDEWEBDATA /*998*/:                     BLHelper.webout();                     return;                 default:                     return;             }         }

順便也解決下其他的函數(shù), .method private showBanner()V和.method private showInterAd(I)V 處理掉直接返回

.class public Lcom/DBGame/DiabloLOL/DiabloLOL;

.super Lorg/cocos2dx/lib/Cocos2dxActivity;

.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/Tool;->adNativeShow(Landroid/app/Activity;FFFF)V     :try_end_0     .catch Ljava/lang/Exception; {: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/Exception;     invoke-virtual {v0}, Ljava/lang/Exception;->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/Tool;->adIntervalShow(Landroid/app/Activity;I)V     :try_end_0     .catch Ljava/lang/Exception; {: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/Exception;     invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V      goto :goto_0 .end method

3. 內(nèi)購(gòu)破解:

去除可能會(huì)產(chǎn)生費(fèi)用的危險(xiǎn)權(quán)限:

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

order id:

搜索上面字符串,向上分析,回溯分析.

.class public Lcn/egame/terminal/paysdk/EgamePay;

.super Ljava/lang/Object;

.source "EgamePay.java"

.method public static pay(Landroid/app/Activity;Ljava/util/Map;Lcn/egame/terminal/paysdk/EgamePayListener;)V     .locals 1     .param p0, "activity"    # Landroid/app/Activity;     .param p2, "listener"    # Lcn/egame/terminal/paysdk/EgamePayListener;     .annotation system Ldalvik/annotation/Signature;         value = {             "(",             "Landroid/app/Activity;",             "Ljava/util/Map",             "<",             "Ljava/lang/String;",             "Ljava/lang/String;",             ">;",             "Lcn/egame/terminal/paysdk/EgamePayListener;",             ")V"         }     .end annotation      .prologue     .line 78     #注意paySuccess這個(gè)函數(shù)只有一個(gè)參數(shù).method public abstract paySuccess(Ljava/util/Map;)V     #而失敗payFailed這個(gè)函數(shù)有第二個(gè)整型參數(shù) .method public abstract payFailed(Ljava/util/Map;I)V     # Egame支付成功     invoke-interface {p2, p1}, Lcn/egame/terminal/paysdk/EgamePayListener;->paySuccess(Ljava/util/Map;)V      return-void  .end method

還可以用paySuccess函數(shù)體代替payCancel和payFailed.在下面的類(lèi)里,

.class Lcom/DBGame/DiabloLOL/DiabloLOL$6;

.super Ljava/lang/Object;

.source "DiabloLOL.java"

聯(lián)通支付接口:

logcat字符串定位啊,

Unicom支付成功

Unicom支付cancel

在下面類(lèi)修改處理,可以用goto大法或者switch大法.

.class Lcom/DBGame/DiabloLOL/DiabloLOL$4;

.super Ljava/lang/Object;

.source "DiabloLOL.java"

.method public PayResult(Ljava/lang/String;IILjava/lang/String;)V      .prologue     .line 694     goto  :pswitch_0  #聯(lián)通支付接口,直接JMP無(wú)條件跳到支付成功      packed-switch p2, :pswitch_data_0 
移動(dòng)支付接口:

logcat定位字符串,

購(gòu)買(mǎi)道具:[

] 成功!

] 失!

在下面類(lèi)修改

.class Lcom/DBGame/DiabloLOL/DiabloLOL$5;

.super Ljava/lang/Object;

.source "DiabloLOL.java"

.method public onResult(ILjava/lang/String;Ljava/lang/Object;)V      .prologue     .line 735     const-string v0, ""      .line 736     .local v0, "result":Ljava/lang/String;     goto :pswitch_0   #移動(dòng)支付接口,直接JMP無(wú)條件跳到支付成功      packed-switch p1, :pswitch_data_0 

4. 統(tǒng)一支付接口:

統(tǒng)一為電信的吧.可以直接成功,沒(méi)那么多彈窗支付

定位字符串

電信初始化成功

.method protected onCreate(Landroid/os/Bundle;)V      .line 254     invoke-direct {p0}, Lcom/DBGame/DiabloLOL/DiabloLOL;->getSimType()I      move-result v4      iput v4, p0, Lcom/DBGame/DiabloLOL/DiabloLOL;->iFromPay:I 

進(jìn)入getSimType方法函數(shù)處理結(jié)果然后賦值給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 type;     }

直接return 1;偽裝為電信,支付接口統(tǒng)一完畢.請(qǐng)參看本文開(kāi)頭的SIM類(lèi)型表格

我第一次比較麻煩的改法如下,

.method private getSimType()I     .locals 6      .prologue     .line 267     const/4 v3, 0x1  #const/4 v3, 0x0  #初始化為0是移動(dòng)      .line 268     .local v3, "type":I     const-string v5, "phone"      .line 269     invoke-virtual {p0, v5}, Lcom/DBGame/DiabloLOL/DiabloLOL;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;      move-result-object v2      check-cast v2, Landroid/telephony/TelephonyManager;      .line 270     .local v2, "tm":Landroid/telephony/TelephonyManager;     invoke-virtual {v2}, Landroid/telephony/TelephonyManager;->getSimOperator()Ljava/lang/String;      move-result-object v5      invoke-virtual {v5}, Ljava/lang/String;->trim()Ljava/lang/String;      move-result-object v1      ######插入自定義log開(kāi)始      invoke-static {v1}, Lcom/android/BS/Log;->LogStr(Ljava/lang/String;)V      ######插入自定義log結(jié)束      ######插入自定義log開(kāi)始        const-string v0, "\n\u65e0\u9650\u5185\u8d2dB.S.\u7834\u89e3\u7248\n www.appleos.xyz \n-- by B.S."      invoke-static {v0}, Lcom/android/BS/Log;->LogStr(Ljava/lang/String;)V      ######插入自定義log結(jié)束      .line 271     .local v1, "sOperator":Ljava/lang/String;     if-eqz v1, :cond_0      const-string v5, ""      invoke-virtual {v1, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z      move-result v5      if-eqz v5, :cond_1      :cond_0     move v4, v3    #移動(dòng)為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/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;      move-result-object v5      invoke-virtual {v5}, Ljava/lang/Integer;->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   #移動(dòng)      .line 281     goto :goto_1      .line 284     :pswitch_2     const/4 v3, 0x1  #const/4 v3, 0x2   #聯(lián)通      .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,偽裝為移動(dòng),統(tǒng)一為移動(dòng)支付.

.method private getSimType()I     .locals 6      ###統(tǒng)一為移動(dòng)短信支付接口直接返回為0     #const/4 v4, 0x0      #return v4 .end method

然后處理移動(dòng)短信支付的函數(shù)方法payInYidong(),移動(dòng)短信支付的另外一種破解方法,

.class Lcom/DBGame/DiabloLOL/DiabloLOL$5;

.super Ljava/lang/Object;

.source "DiabloLOL.java"

把移動(dòng)購(gòu)買(mǎi)成功的代碼,就是:pswitch_0里兩個(gè)goto :goto_0之間的有效代碼,直接搬到payInYidong()里,放到:cond_0和return-void之間.

    .line 755     :goto_0     invoke-static {}, Lcom/DBGame/Common/BLHelper;->closeShieldLayer()V      .line 756     return-void      .line 738     :pswitch_0     const-string v1, "10"      invoke-virtual {p3}, Ljava/lang/Object;->toString()Ljava/lang/String;      move-result-object v2      invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)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  ###從下面一句開(kāi)始購(gòu)買(mǎi)成功,不彈窗.     new-instance v1, Ljava/lang/StringBuilder;      invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V      const-string v2, "\u8d2d\u4e70\u9053\u5177\uff1a["      invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;      move-result-object v1      iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;->this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;  #和下一語(yǔ)句合并      iget-object v2, v2, Lcom/DBGame/DiabloLOL/DiabloLOL;->PAY_NAME:[Ljava/lang/String;      iget-object v3, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;->this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;  #和下一語(yǔ)句合并      # 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/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;      move-result-object v1      const-string v2, "] \u6210\u529f\uff01"      invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;      move-result-object v1      invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;      move-result-object v0      .line 742     iget-object v1, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;->this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;  #和下一語(yǔ)句合并      iget-object v1, v1, Lcom/DBGame/DiabloLOL/DiabloLOL;->PRO_ID_Str:[Ljava/lang/String;      iget-object v2, p0, Lcom/DBGame/DiabloLOL/DiabloLOL$5;->this$0:Lcom/DBGame/DiabloLOL/DiabloLOL;  #和下一語(yǔ)句合并      # 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/BLHelper;->purchaseComplete(Ljava/lang/String;I)V      goto :goto_0  ###購(gòu)買(mǎi)成功不彈窗到goto那邊的closeShieldLayer語(yǔ)句然后返回結(jié)束      .line 748     :pswitch_1

最后應(yīng)該變?yōu)閖ava源碼如下面的樣子:

private void payInYidong() {         if (LOLConstant.sCMCC_OPEN == 0) {             BLHelper.showShieldLayer("正在處理,請(qǐng)稍后.....");         }         String str = "購(gòu)買(mǎi)道具:[" + this.PAY_NAME[this.mPayIndex] + "] 成功!";         BLHelper.purchaseComplete(this.PRO_ID_Str[this.mPayIndex], 1);         BLHelper.closeShieldLayer();     }

有童靴反應(yīng)真機(jī)內(nèi)購(gòu),會(huì)卡在"正在處理,請(qǐng)稍后.....",其實(shí)這個(gè)要等一會(huì)的,等一會(huì)兒就消失了. 不愿意等太長(zhǎng)時(shí)間,那么就干脆干掉她,如下,只要上面說(shuō)的兩個(gè)goto :goto_0夾著那段代碼,另外記得這里面的代碼,需要合并處理this指針問(wèn)題喲.

private void payInYidong() {         String str = "購(gòu)買(mǎi)道具:[" + this.PAY_NAME[this.mPayIndex] + "] 成功!";         BLHelper.purchaseComplete(this.PRO_ID_Str[this.mPayIndex], 1);     }
幾種支付方式如下:(短信,聯(lián)通,移動(dòng),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("正在處理,請(qǐng)稍后.....");         }         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;             }         });     }

[1] [2]  下一頁(yè)



熱門(mén)文章
  • 機(jī)械革命S1 PRO-02 開(kāi)機(jī)不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點(diǎn)不...
  • 三星一體激光打印機(jī)SCX-4521F維修...
  • 通過(guò)串口命令查看EMMC擦寫(xiě)次數(shù)和判...
  • IIS 8 開(kāi)啟 GZIP壓縮來(lái)減少網(wǎng)絡(luò)請(qǐng)求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對(duì)講門(mén)禁讀卡異常維修,讀卡芯...
  • 新款海信電視機(jī)始終停留在開(kāi)機(jī)界面...
  • 常見(jiàn)打印機(jī)清零步驟
  • 安裝驅(qū)動(dòng)時(shí)提示不包含數(shù)字簽名的解...
  • 共享打印機(jī)需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機(jī)的...
  • 錦州廣廈電腦上門(mén)維修

    報(bào)修電話(huà):13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號(hào):遼ICP備2023002984號(hào)-1
    上門(mén)服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護(hù),上門(mén)維修電腦,黑屏藍(lán)屏死機(jī)故障排除,無(wú)線(xiàn)上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤(pán)刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: JAVA性无码HD中文| 精品亚洲AV无码一区二区| 精品三级AV无码一区| 久久无码AV一区二区三区| 67194成是人免费无码| 久久久无码中文字幕久...| 一本天堂ⅴ无码亚洲道久久| 日韩人妻无码一区二区三区久久99| 国产成人无码一区二区三区| 国产在线拍揄自揄拍无码视频| 亚洲色无码专区在线观看| 97在线视频人妻无码| 亚洲av永久无码嘿嘿嘿| 无码AV天堂一区二区三区| 日韩a级无码免费视频| 一级电影在线播放无码| 久久久g0g0午夜无码精品| 亚洲精品中文字幕无码AV| 亚洲av永久无码精品秋霞电影影院 | 亚洲av午夜国产精品无码中文字| 综合无码一区二区三区四区五区| 日韩va中文字幕无码电影| 精品国产性色无码AV网站 | 成在人线av无码免费高潮水| 一本色道无码道DVD在线观看| 久久久久亚洲AV成人无码| 熟妇人妻中文a∨无码| 免费无码一区二区| 亚洲精品一级无码鲁丝片| 精品无码久久久久久久久水蜜桃| 中文AV人妻AV无码中文视频| 人妻无码一区二区不卡无码av | 久久精品中文字幕无码绿巨人| 亚洲精品无码午夜福利中文字幕| 久久亚洲AV无码西西人体| 国产精品无码久久久久| 中文字幕无码av激情不卡久久| 久久青青草原亚洲av无码| 国产午夜无码精品免费看| 无码人妻黑人中文字幕| 精品人妻无码区二区三区|