android開發環境搭建
我理解的學習路線是首先要掌握和了解常見的工具、搭建環境。然后就是緩慢的積累特征,通過長期的練習使自己進步,通過android逆向課程的學習。常用的工具如下:
android SDK工具包
(1)adb.exe:android debug bridge 安卓調試橋連接手機、模擬器。
D:\AndroidTools\Android_SDK\platform-tools
(2)monitor.exe:安卓設備監視器
D:\AndroidTools\Android_SDK\tools\monitor.bat
adb.exe 用於調試,monitor.exe用於監視
android adb shell命令約等價於linux shell命令
android集成開發的開發環境
(1)Android Studio
(2)IntelliJ IDEA
Android模擬器
(1)原生的模擬器
(2)BlueStacks[藍疊]
(3)夜神
(4)海馬玩
Android逆向工具
(0)集成類工具:jeb、apkkiller
(1)反編譯工具:
baksmali.jar:將dex文件反匯編成smali代碼
smali.jar:將smali代碼匯編生成dex文件(android的可執行文件)
apktool.jar:基於smali、basksmali工具開發的,可以反編譯apk文件成smali,也可以將smali文件回編譯成apk文件,
(2)清單文件解密工具:
AXMLPrinter2.jar:清單解密工具,反編譯apk中的xml文件
APKParse.jar:套用了Apktool中解析xml文件的源碼。
APK15PBParse.jar:APKParse.jar修改而成,修復了原有工具的bug。
(3)APK簽名工具:
signapk.jar:使用apktool生成的apk文件,是不能直接安裝到模擬器或是手機中的,因為沒有簽名就會報錯。
(4)dex轉jar工具
dex2jar:將dex文件轉化為java jar包,因為轉成jar包之后,方便使用JD-GUI工具反編譯成java源碼。
(5)java源碼反編譯工具
JD-GUI:使用JD-GUI打開jar包,可以看到反編譯的源碼。
游戲破解思路
(1)找尋支付成功的信息,獲取支付相關的函數。
(2)將支付成功的smali指令注入到支付失敗的函數中。
操作步驟
(1)打開monitor,點擊游戲中的購買按鈕,抓取到支付的字符串。
(2)在apkkiller轉換編碼為unicode編碼
(3)在apkkiller搜索字符串,然后使用自帶的JD-GUI工具查看源碼。
(4)在源碼中定位到支付相關的函數。payCancel、payFailed、paySuccess
(5)到apkkiller中查找與支付相關函數相關的smali文件。然后smali指令中傳參的常量值記錄下來。
(6)在函數窗口處查找購買失敗的函數(payFailed)、購買成功的函數(paySuccess)的函數傳參值,將兩者對比。
(7)對比出來傳參值的區別后將購買成功(paySuccess)的函數傳參值和購買失敗(payFailed)的函數傳參值相互替換。
(8)將修改后的值Ctrl+s保存后再編譯一遍,得到編譯后的APK放到模擬器中運行就可以達到破解的效果了。
(9)運行效果