1. 程式人生 > >付費水果忍者破解

付費水果忍者破解

前言

閒著無聊手機上下載了一款手機遊戲玩玩,正在玩的時候突然彈出了付費對話方塊,剛開始我還納悶怎麼沒廣告,這麼良心,原來是在這裡等著呢,如下圖:
這裡寫圖片描述
作為一個逆向初學者突然有一股衝動,能不能發揮專業技能解決下問題

分析

總體思路

很明顯改遊戲是通過彈出dialog阻止使用者進行遊戲,關掉對話方塊遊戲也會隨之退出,所以我們的目標就是阻止dialog彈出

從介面定位

用jeb檢視apk原始碼發現沒有加密,還用apktool反編譯apk得到smali程式碼,反編譯命令如下:

java -jar apktool.jar d -f xxx.apk -o 輸出路徑

根據dialog上的關鍵詞“確認支付

”在jeb中進行字串搜尋,定位到程式碼並反編譯成java程式碼,結果如下:
這裡寫圖片描述
很明顯這段程式碼是向一個LinearLayout佈局中新增一個TextView控制元件,繼續檢視該函式所屬的類如下:
這裡寫圖片描述
和預測一樣該類繼承自dialog,我們知道dialog要想顯示出來必須要呼叫show()方法,於是查詢一下對e類的引用:
這裡寫圖片描述
第三條看起來比較像重寫show方法,雙擊定位到程式碼:
這裡寫圖片描述
繼續跟蹤呼叫show方法的位置,發現只有一處位置呼叫:
這裡寫圖片描述
雙擊定位到程式碼,發現呼叫了e的show方法的位置:
這裡寫圖片描述
我們只需要找到該smali檔案將對應程式碼註釋即可,檔案位置同該檔案第一行的包名:
這裡寫圖片描述

檔名即類名ActiveWrapper
開啟檔案搜尋如下關鍵詞:

Lcom/idreamsky/gamecenter/ui/e;->show()V

定位到程式碼,將該行註釋即可,註釋符號為“#”
這裡寫圖片描述
儲存檔案後使用apktool進行回編譯,生成修改後的apk,命名如下:

java -jar apktool.jar b -d out -o debug.apk

改apk並不能直接安裝,需要簽名後再安裝,簽名命令如下:

java -jar ..\SignApk\signapk.jar ..\SignApk\platform.x509.pem ..\SignApk\platform.pk
8 debug.apk debug.sig.apk

簽名後的apk可以正常使用了
原版apk下載地址