Android破解學習之路(五)——Android游戲 割繩子:魔法 + 在游戲加入Toast彈窗提示

来源:https://www.cnblogs.com/kexing/archive/2018/01/01/8151182.html
-Advertisement-
Play Games

前言:這一期的破解教程,有新的知識內容出現啦! 這一期破解的游戲是找不到之前的關鍵字,怎麼破解呢? 破解成功之後,添加一個Toast彈窗提示由XX破解,這操作該如何實現呢?請往下看~ 鏈接: https://pan.baidu.com/s/1dF8jKdF 密碼: 6666 破解步驟: 1.試玩,找 ...


前言:這一期的破解教程,有新的知識內容出現啦!

這一期破解的游戲是找不到之前的關鍵字,怎麼破解呢?

破解成功之後,添加一個Toast彈窗提示由XX破解,這操作該如何實現呢?請往下看~

鏈接: https://pan.baidu.com/s/1dF8jKdF 密碼: 6666

破解步驟:

1.試玩,找不到關鍵字

由圖片可以看出,這是中國移動的咪咕游戲,這款游戲是接入了咪咕游戲基地的sdk,如果你不懂sdk,那麼我也不會解釋,百度是你的好老師!

游戲使用了咪咕游戲基地的sdk,其中的smail文件一般都有Billing這個關鍵字,那麼我們試著搜索看看

2.查找Paycallback關鍵字

 可以看到,我們經過文件類型篩選之後,還是有許多的結果,這時我們可以再原來的關鍵字上再加上個pay進行搜索

嗯,這下子結果就是少了很多了,咪咕游戲這類sdk,關於支付的類名一般都是含有callback,所以我們可以定位到圖中的三個含有callback的文件,第一個我就不圈出來了

 我們一個個使用工具去查看其的java偽代碼,則可以再次精確定位到ChinaBillingPayCallBack$1這一個文件

3.理解支付邏輯

我們查看ChinaBillingPayCallBack$1這個smail文件的偽代碼

 

可以看到,是if與else if的嵌套的分支語句,每個判斷都是給i賦值,估計大家看得不太懂,說實話,其實我也不太懂,那個for迴圈裡面有個setResultCode,其中的參數為i,個人覺得這個應該是支付成功的關鍵代碼,問題就來了,我們不知道i等於幾時,這個setResultCode才是支付成功,這個時候,我們有什麼辦法嗎?答案很簡單,一個個地試,我們將i的值改變,測試APP,就是可以知道i為1的時候,就是會進入支付成功的方法

回到smail文件中,與之前的java偽代碼對比,可以發現v1就是那個i值,之後,就好辦了,我們跳過所有的判斷語句,修改v1的最後的值進行測試

 

PS:const/4 v1,0x1 這個的意思為給v1賦值為1,如果是const/4 v1,0x2,就是給v1賦值為2,我這裡只是簡單的說明,想要深入的可以百度搜索一下smail中const指令

我們測試到1,就會發現支付已經成功了,這也算是成功破解了,不過,我覺得還是得再分析分析這smail文件

4.破解思路

 我們分析一下上述的smail文件,首先,v1接收參數p1的值,之後,判斷參數p1與v2的值,相等的話也就是v1為1,之後向下執行,從前面我們知道,v1為1的時候,就是支付成功的代碼,我們可以刪除掉這一行的判斷從而實現破解的功能,不相等的話就是跳轉到cond_1,記住末尾的cond_0和goto_0這兩個,之後會提到

 我們從上面跳轉到了cond_1這裡,v2就是被賦值為3了,之後,參數p1又是接著與v2比較,相等則是往下執行,也就是給v1賦值為3,跳轉到goto_0,也就是之前上面說的地方,不相等就是跳轉到cond_2,以此類推,大家應該能理清楚大概邏輯了吧

PS:大家可能不知道if-ne這個語句的作用,可以直接使用滑鼠放在上面,之後就會浮出提示

 

 

兩種方法破解:

上面都有提及到了,這裡寫個總結

1.刪除第一個判斷語句,不跳轉到之後去判斷,,v1就是為1

2.在所有判斷結束之後,給v1賦值為1

5.增加Toast提示

接下來就是新學的內容了,重點來了!!

首先,先確定開始的界面是哪一個activity,我使用了當前activity 這款APP,之後運行游戲,左上角就是會有提示,我們可以知道CTRMActivity這個

 

第二步,我們需要找到這個activity對應的smail文件,直接搜索(如果你不嫌麻煩的話,可以找包名,依次地尋找)

我們在a文件夾那裡,右擊,之後選擇打開方式->打開文件路徑

第四步,新建一個txt格式文件,修改文件名為craker,之後把擴展名改為smali(呃,好像發現我之前都是寫成了smail,大家註意下啊,我就不修改了

返回到Androidkiller中,點擊右邊的刷新按鈕

之後,你就發現有craker這個smali文件了,打開它,寫上下列代碼,可以看到,有個toast的字元串,我們只需要將這裡修改成我們想要Toast提示的信息,如果是中文的話,需要轉換成Unicode,直接使用Androidkiller自帶的工具轉換吧,前面幾篇也是有說過,我就不多說了

.class public Lcrack;
.super Ljava/lang/Object;
.source "craker.java"
 
.method public static toast(Landroid/content/Context;)V
    .locals 2
    .prologue
 
        const-string v0, "by stars-one"
 
        const/4 v1, 0x1
 
        invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
 
        move-result-object v0
 
        invoke-virtual {v0}, Landroid/widget/Toast;->show()V
 
        return-void
.end method

 

 最後,我們在CTRMactivity中的onCreate方法里寫上調用的代碼,就大功告成了

invoke-static {p0}, Lcrack;->toast(Landroid/content/Context;)V 

 

 

誒,等等,onCreate方法呢?沒有??擦嘞,不可能。。好吧,我們找錯了,我們再運行一遍游戲,我看到了一個ChannelSplash,就決定是它了,去Androidkiller找找看(下麵的圖片是我已經修改成功了的圖片,請忽略彈出的Toast

 

 這次找對了,這裡有onCreate方法,之後的步驟與上面的一樣,這裡我就不多說了,註意一下最後調用代碼添加的位置,還有記得刪除掉之前在CTRMactivity中添加的代碼

成功了,不過想到了activity的模式,好像onstart方法也是可以用,剛纔的那個CTRMactivity就是有一個onstart方法,我把前面的刪除,之後按照之前的步驟,嘗試在CTRMactivity中裡面寫上了調用的那一段代碼

之後,測試的時候,發現成功顯示

 

 

 6.刪除許可權,測試

我們可以把這個APP的名字更改了,這樣顯得比較高端哈!

直接搜索割繩子就行了,之後進入到string文件,修改app_name

 

這裡不得吐槽一下,這個游戲好像刪除發送簡訊會出錯,進入游戲的時候提示應用已停止,暫時還不知道解決,有哪位大神看到這裡能知道如何解決這個問題,希望能夠告知~~感激不盡!!

還有,懸浮窗廣告還不知道怎麼破解,有大神能教教我嗎~~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 進程線程及其狀態 進程 進程的概念 進程就是執行中的程式。 進程的狀態 進程有五種狀態,分別是: 新建:進程正在被創建 運行:進程正在被執行 阻塞:進程等待某個事件(如I/O操作) 就緒:進程等待分配處理器 終止:進程完成執行 進程調度流程圖 線程 線程的概念 線程是程式執行流的最小單元,線程早期也 ...
  • 以童話的方式深入淺出地講述了 Cortex M7 核心 MCU 的 ITCM 和 ICache 的原理、優勢和用法。 ...
  • Mysql中函數和存儲過程的區別 存儲過程: 1、 可以寫sql語句 2、 inout,out構造返回值 3、 調用:call:存儲過程名稱 4、 可以返回結果集 函數: 1、 不可以寫sql語句 2、 使用return 返回值 3、 調用時,使用函數名()即可 4、 不能獲取結果集 ...
  • 2.Orders訂單表 ...
  • ...
  • 資料庫設計範式是一個很重要的概念,但是這個重要程度只是適合於參考。使用資料庫設計範式,可以讓數據表更好的進行數據的保存,因為在合理的設計,如果數據量一大也肯定會存在性能上的問題,所以在開發中,唯一可以稱為設計的寶典——設計的時候儘量避免日後的程式出現多表關聯查詢。 第一範式 所謂的第一範式指的是數據... ...
  • 背景 App的開發一般都需要滿足Android和iOS兩個系統環境,也就意味著一個App需要定製兩套實現方案,造成開發成本和維護成本都很高。為瞭解決這個問題,最好的辦法就是實現一套代碼跨端運行,所以Hybrid App混合應用模式應運而生。在Hybrid App整個開發框架上,有各種各樣的框架,各種 ...
  • 如上圖,Runtime SDK是什麼東西?居然還有安卓、蘋果手機、Mac、QT的版本? 是不是意味著ArcGIS的編輯數據和空間分析可以通過編程的方法在每個平臺上滿地跑了? 答案是:是,也不是。 1. 與AO/AE的區別 AO是ArcGIS Desktop和ArcGIS Server的底層技術,有C ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...