付費水果忍者破解
阿新 • • 發佈:2019-02-09
前言
閒著無聊手機上下載了一款手機遊戲玩玩,正在玩的時候突然彈出了付費對話方塊,剛開始我還納悶怎麼沒廣告,這麼良心,原來是在這裡等著呢,如下圖:
作為一個逆向初學者突然有一股衝動,能不能發揮專業技能解決下問題
分析
總體思路
很明顯改遊戲是通過彈出dialog阻止使用者進行遊戲,關掉對話方塊遊戲也會隨之退出,所以我們的目標就是阻止dialog彈出
從介面定位
用jeb檢視apk原始碼發現沒有加密,還用apktool反編譯apk得到smali程式碼,反編譯命令如下:
java -jar apktool.jar d -f xxx.apk -o 輸出路徑
根據dialog上的關鍵詞“確認支付
很明顯這段程式碼是向一個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下載地址