天天看點

安卓從開發到逆向(二)逆向分析簡單安卓手遊

在上一篇文章,我們學習了

安卓從開發到逆向(一)java轉換為smali對比分析

簡單的認識了java代碼和smali代碼之間的對應關系,本文我們結合相關知識點,進行一次實戰,逆向破解簡單安卓手遊,讓無限生命稱為可能。

安卓手遊apk及逆向破解工具下載下傳位址:

連結:https://pan.baidu.com/s/1mHOl9y-LXnETUg3oDAKNvA
提取碼:3ygd
           

準備工具:

android killer,安卓手遊1,夜神模拟器
           

我們先将安卓手遊安裝到夜神模拟器中,運作一下,看一下遊戲初始給我們多少生命值。打開遊戲後,點選商店,我們可以看到,遊戲初始給我們提供了15個小球,3個護盾,0個通關鑰匙,以及兩次複活愛心。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

接下來,我們點選無限量的球,購買道具,選擇其他支付。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

模拟器要求安裝插件,點選取消,不安裝。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

此時無法購買即支付失敗。使用androidkiller,對這款手遊進行逆向破解。此時可以解除安裝在夜神模拟器中原始,也就是未破解前的手遊app了。

打開androidkiller,将apk拖入軟體,進行逆向破解。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

如果androidkiller卡在正在反編譯 APK 源碼,請稍等…,則需要關閉androidkiller,重新打開。

切換到工程搜尋,在搜尋框中輸入 支付失敗 ,點選左下角的Aa,将文本轉換為unicode,并點選搜尋。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

根據關鍵字特征,我們找到了支付失敗文本所在的代碼段

安卓從開發到逆向(二)逆向分析簡單安卓手遊

接下來,我們可以點選菜單欄的java圖表,進行java和smali代碼的對比分析。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

在java代碼中,我們可以看到,目前類OppPay$2$1中包含兩個方法,分别為onFailure和onSuccess,同樣的,在smali代碼中,也存在着onFailure和onSuccess兩個方法。通過閱讀java代碼,大緻了解其支付邏輯。我們就可以着手于修改smali代碼了。

我們的修改方法有兩個,分别為:

1、将onFailure中的代碼替換為onSuccess中的代碼
2、找到onFailure方法的調用處,将其替換為onSuccess方法
           

經過對比分析,第一種方法更為簡單。

我們複制smali中onSuccess的代碼,替換onFailure代碼。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

修改後,切記,一定要儲存。

接下來,我們點選androidkiller中的android标簽,點選編譯,重新将smali代碼編譯成apk包。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

重新編譯的apk包儲存在目前項目目錄下。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

接下來就是見證奇迹的時刻了,我們将破解後的apk安裝到夜神模拟器當中,運作,點選商店,購買無限量的球。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

接下來,點選 其他支付。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

app提示安裝插件,我們選擇取消安裝。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

這時,我們就可以看到,原來的15個小球,現在變成無限量的小球了。

安卓從開發到逆向(二)逆向分析簡單安卓手遊

動手嘗試一下吧。

代碼參考

歡迎交流,一起學習,一起進步。

安卓逆向視訊教程:

微信關注公衆号:dazhuang_spider,回複android逆向教程擷取

安卓從開發到逆向(二)逆向分析簡單安卓手遊