APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术
JEB環境配置
- 安裝java環境變量(最好jdk11)
- 安裝adb環境變量
設置adb環境變量最好以Android命名
- 啟動開發者模式
設置-->關于平板電腦-->版本號(單機五次)
- 開啟USB調試
設置-->系統-->高級-->開發者選項-->USB調試
開啟USB調試目的是為了后續讓JEB能夠獲取模擬器上的進程
- 安裝激活JEB
軟件安裝包和破解參考吾愛破解文章JEB動態調試Smali-真機/模擬器(詳細,新手必看)
JEB動態調試
使用的吾愛破解中大佬課程《安卓逆向那點事》中提供的練習demo第四關來練習動態調試。
- 在進行動態調試前必須在apk中加入允許動態調試,一般在application標簽中加入即可。其他加入動態調試方法相較于加入代碼來說有點復雜,可以參考《安卓逆向這檔事》五、1000-7=?&動態調試&Log插樁
android:debuggable="true"
- JEB中打開的apk必須也加入了動態調試才能和模擬器中的進程進行互動,查看方法如下
在對第四關進行練習時,需要輸入密鑰,可以對關鍵字進行搜索
找到關鍵字所在位置
解析為java代碼后發現控制程序邏輯的是一個if語句,在執行check()函數后,通過check()函數的返回值來判斷if語句的執行邏輯,這里只需要將check()函數的返回值修改為真即可成功繞過密鑰判斷。
雙擊查看check()函數,這里有檢測提交的密鑰是否帶關鍵字flag{}
在函數返回值的地方判斷變量v7是否與一串加密數據是否一致,如果一致就返回為真。有兩種方式可以繞過密鑰檢測,一種是從逆向的角度將return的值固定為true,另外一種方法是通過動態調試的方式我們可以通過斷點調試來獲取這段加密數據,從而成功獲取密鑰。
逆向修改返回值:
在修改返回值的方法中,我們可以將代碼中檢測flag{}關鍵字的檢測返回值一并進行固定修改,順帶將關鍵字檢測也一并繞過
在以下三個返回值的地方我們需要全部固定為true
對應的smail代碼如下
在return返回之前使用const進行重新賦值,由于JEB不能重新打包,使用MT管理器進行修改,修改效果如下
在進行修改后對apk進行重新編譯后并簽名安裝即可成功繞過,繞過效果如下,關鍵字檢測以及密鑰檢測全部成功繞過。
斷點調試密鑰:
在進行斷點調試的時候首先判斷需要在那里下斷點,我們想要通過斷點調試得到什么。
我們需要通過斷點調試使得check()函數的最終返回值為true,需要得到與v7進行對比的一串密鑰,所以我們在進行斷點調試的時候需要在密鑰得到的時候、返回值之前進行斷點,并且在發送調試數據時必須帶有flag{}關鍵字通過關鍵字檢測才能使程序正常執行。
開啟調試
下斷點,在下斷點時需要在smail語法視圖中
發送數據,在開啟斷點調試后,進行發送數據的時候并不會提示密鑰錯誤,因為程序在執行過程中被斷點調試攔截了
成功斷點后,一步一步執行程序的同時觀察和分析局部變量
斷點調試執行過程checkNotNullExpressionValue()-->encodeToString(),在encodeToString()函數返回值發現特殊變量
在執行到areEqual()函數時,我們發送的數據是和該變量進行比較。
通過嘗試將密鑰換成flag{VEFREgwEAA==}即可成功認證密鑰。
LSPosed模塊
安裝Magisk、LSPosed以及算法助手
XPosed框架因只支持安卓8及以下,故高版本應使用Magisk+LSPosed
參考文章雷電模擬器9.0.56安裝Magisk+LSPosd
算法助手
通過LSPosed模塊中所提供得集成功能可以大大節省時間。
在使用算法助手時,需要現在LSPosed模塊中將進行調試得目標APP選中,系統框架是必須勾選的。
勾選目標APP后,在將算法助手中得APP勾選即可
LSPosed模塊中,具有很多集成的功能
比如抓取加密算法
在面對具有加密算法得目標時候,使用算法助手中抓取算法功能可以很快獲取到加密算法得位置,或者加密算法采用得加密密鑰、偏移量等關鍵信息
通過算法助手啟動APP在登錄時調用加密算法,調用結束后可以在算法助手得日志處看到加密算法得調用過程以及加密細節
自定義Hook
在算法助手功能中有一項功能可以添加自定義hook
所謂hook技術,通俗來講就是可以改變程序得執行邏輯,類似與bp抓包得時候修改數據包再將數據包放出,hook可以將程序中得變量或者返回值進行修改。
在添加hook時,需要將關鍵程序得執行邏輯搞清楚,將關鍵變量或者返回值進行修改。
例如在之前案例中得某小說APP中,通過關鍵字定位到關鍵邏輯,進行反編譯后分析程序執行邏輯
if語句是否執行根據y5得返回值來判斷,如果y5得返回值為true,即可成功進入if語句。我們可以通過自定義hook模塊將y5得返回值固定。
使用JEB將鼠標放置在方法上即可查看方法得詳細信息
根據y5方法所在得類,以及返回值類型構造自定義hook
將所添加的hook勾選后,使用算法助手啟動即可
在沒有勾選自定義得hook模塊時,目標APP正常顯示邏輯,vip并沒有成功開通
在勾選自定義hook后,啟動之后目標APP成功開通vip
在算法助手得日志記錄中可以看到算法助手通過自定義得hook將目標APP中得y5()方法進行了攔截并修改了返回值。
總結
以上是生活随笔為你收集整理的APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式---策略模式+工厂
- 下一篇: Sealos 私有云正式发布,三倍性能