JEB動態調試

往期推薦

Method Profiling

方法棧跟蹤

Log插樁調試smali代碼

DDMS工具使用

調試逆向分爲動態分析技術和靜態分析技術。靜態分析技術是指**者利用反彙編工具將二進制的可執行文件翻譯成彙編代碼,通過對代碼的分析來**軟件;而動態調試則是指**者利用調試器跟蹤軟件的運行,尋求**的途徑。
動態調試有兩種方法:Jeb調試和AndroidStudio+smalidea插件動態調試。

一:JEB工具介紹

JEB是一款功能強大的爲安全專業人士設計的Android、應用程序反編譯工具。用於****或審計APK文件,可以提高效率減少許多工程師的分析時間。

首先下載JEB工具,下載完成後解壓安裝包, 解壓後運行安裝目錄下的jeb_wincon.bat文件。

本次以「zhuceji.apk」文件作爲案例,再下載「zhuceji.apk」文件,打開雷電模擬器安裝該APK,點擊運行。彈出兩個編輯框「用戶名」和「***」 以及一個註冊按鈕,如下圖所示。

在這裏插入圖片描述

打開JEB工具,將該「zhuceji.apk」文件拖入「項目」窗口,自動開始反編譯。反編譯完成後,包含以下4項信息,如下圖所示:

Manifest:配置文件
Bytecode:字節碼
Certificate:證書
Resources:資源文件

在這裏插入圖片描述

探究:如果無法打開JEB工具怎麼辦?

簡單來講,就是檢查JDK環境變量,是否配置JAVA_HOME。具體可以查看JDK環境配置教程。

接下來雙擊「Bytecode」,右側打開了兩個窗口,工程目錄(Bytecode/Hierarchy)和反彙編窗口(Bytecode/Disassembly),如下圖所示。

在這裏插入圖片描述

爲了方便後面的靜態分析和動態調試,通過拖拽窗口的方式,調整UI界面。在工程目錄(Bytecode/Hierarchy)中雙擊指定的文件,就會跳轉到反彙編窗口(Bytecode/Disassembly)裏面smali代碼對應的位置。

比如這裏選中「MainActivity」雙擊則會跳轉到對應的位置,也可以直接雙擊指定字段或者方法跳轉到對應的位置,如下圖所示。

在這裏插入圖片描述

二:逆向分析JAVA代碼

爲了方便操作,平時都會使用快捷鍵,在這裏介紹兩個快捷鍵:

1.快捷鍵Q:將定位到的smali轉換爲僞代碼。具體操作就是在工程目錄中,單擊選中「MainActivity」文件按「Q」即可。
2.快捷鍵Ctrl+B:在Smali中鼠標單擊選中行後添加斷點,再按一次取消斷點。

在做JEB的動態調試前,必須先靜態分析APP執行流程。

在工程目錄中,選中「MainActivity」文件按「Q」將smali轉換爲僞代碼,然後找到它的onCreate函數,這個函數的作用就是初始化當前代碼綁定的一些事件,如下圖所示,分析的這個」註冊」按鈕的點擊事件。

在這裏插入圖片描述

這個onClick函數就是我們需要分析的「點擊事件」,緊接着就是一個if判斷,可以看到「edit_username」,它獲取到了我們賬號編輯框裏的內容以及***的內容,接着調用了當前類裏面的一個checkSN這個方法,我們看這個方法實現了那些功能,如下圖所示。

在這裏插入圖片描述

然後直接雙擊checkSN這個方法就會跳轉到對應的實現位置,如下圖所示。

在這裏插入圖片描述

在這裏可以看到賬號和***傳遞進來,首先判斷賬號是否爲空(null),如果爲空,就return返回一個false,方法執行結束;不爲空,繼續執行。

再判斷賬號的長度是否爲0 ,如果長度爲0,就return返回一個false,方法執行結束;不爲0,繼續執行。
最後判斷***是否爲空(null)以及它的長度是否爲16。如果爲空或不爲16,就return返回一個false,執行結束。不爲空且長度爲16,繼續執行。
將傳進來的賬號進行MD5運算,裏面還有一個for循環一直對運算的結果進行一個拼接,每次+2。拼接完成以後還調

equalsIgnoreCase進行了一個比較,如果該方法的返回值爲false ,就說明輸入的***錯誤,反之,返回值爲true,就說明***是正確的。

三:Jeb動態調試

Jeb動態調試有兩種方式:
一種是普通模式調試,另外一種是debug模式啓動程序調試。

1.普通模式調試

(1)在smali代碼中找到checkSN方法,鼠標點擊該方法的第一條指令,
按快捷鍵Ctrl+B設置斷點,如下圖所示。

在這裏插入圖片描述

(2)運行設備上被調試的應用,這節課裏也是「zhuceji.apk」,再點擊菜單欄上「Debugger」選項下的「Start」按鈕開始調試,如下圖所示。

在這裏插入圖片描述

(3)點擊」start」按鈕後,會彈出一個彈窗,在這裏點擊「確定」按鈕,如下圖所示。

在這裏插入圖片描述

(4)之後就會彈出一個「Attach」窗口:
Machines/Devices:選中要調試設備,即設備名稱。
Processes:選中要調試的應用程序對應的進程,即Flags爲D的進程,也就是進程列表,可通過點擊Flags 排序的方式快速選中。點擊下「attach」按鈕開始調試,如下圖所示。

在這裏插入圖片描述

(5)點擊「attach」附加成功後,可以看到調試界面中有增加的窗口,如下圖所示。
VM/Threads 是線程窗口。
VM/Breakpoints 是查看斷點窗口。
VM/Locals是寄存器窗口,使用它查看對應寄存器的值,但是上排的工具還是灰色無法使用。

在這裏插入圖片描述

(6)再次打開「zhuceji.apk」,分別輸入「用戶名」爲「易錦大學」,「***」爲「1234567890123456」,用戶名和***可以自擬,如下圖所示。

此時點擊「註冊」按鈕,程序就會在我們設置斷點的位置斷下來,如下圖所示。

在這裏插入圖片描述

查看是否斷點成功,下段點的位置變爲深藍色,這就表示成功斷下。寄存器窗口,顯示當前寄存器的信息。如下圖所示。

在這裏插入圖片描述

這時,上排灰色的圖標會變亮,這些圖標是JEB調試的常用功能,如下圖所示。
綠色三角:恢復程序運行。
紅色正方形:結束調試。
後面四個黃色的箭頭依次分別爲:單步步入、單步步過、返回、運行到光標所在位置。

在這裏插入圖片描述

通過之前的分析,我們知道checkSN方法會對我們輸入的「用戶名」和「***」進行一系列的判斷:判斷賬號不是不爲空(null),判斷賬號的長度不爲0 ,判斷***的不爲空(null)且長度爲16。如果均滿足條件,然後就會對我們輸入的用戶名進行MD5運算,獲取摘要信息。將MD5後的摘要信息轉換爲字符串存放在v3寄存器裏面 。要查看v3寄存器裏面存放的字符串內容,需要修改它的數據類型,將int類型改爲string類型。v3寄存器存放的字符串長度爲32,對這個字符串進行處理,如下圖所示。

注意:查看完寄存器的值後記得把它的數據類型改回int類型,否則程序會崩潰。

在這裏插入圖片描述

這裏看到他加密出來的值爲:「2693cd1ae58a54a161599de9130fa864」,把這個值傳遞進去,進行一個for循環,看到這裏就是循環 v4的值每次都加2,然後goto到68這個位置,判斷是否取這個32位的循環,取完後會在0000007c這個位置進行一個比較,最後把運行取值存放在v6寄存器中,這裏需要轉換爲string類型,後面的「200c5d8e953336bd」就是正確的***。

注意:jeb反編譯中的smali代碼和androidkiller 反編譯的smali代碼的格式區別

通過以上的調試,得出正確的***爲:「200c5d8e953336bd」,如下圖所示。

在這裏插入圖片描述

現在把這個字符串輸入到***編輯框裏面,點擊「註冊」按鈕,提示「註冊成功」,如下圖所示。

在這裏插入圖片描述

2. debug模式調試

debug模式調試和普通模式調試區別在哪裏?在程序啓動過程中,程序入口界面和入口點裏的函數執行時機非常早。要調試此類函數,就需要使用debug模式啓動。

首先打開雷電模擬器,保證需要調試的apk已經安裝。在cmd裏面輸入adb shell am start -D -n 應用程序包名/應用程序入口界面,回車執行該命令,如下圖所示。

在這裏插入圖片描述

我們可以看到模擬器彈出了一個彈窗,等待被調試,如下圖所示。

在這裏插入圖片描述

在onCreate方法打一個斷點,設置斷點的方法和普通模式相同。點擊菜單欄「Debugger」選項下的「Start」按鈕開始調試,如下圖所示。

在這裏插入圖片描述

附加成功後,可以看到成功在onCreate方法斷下,如下圖所示。

在這裏插入圖片描述

既然斷點設置成功,就說明我們同樣可以採用「debug」模式進行調試,也可以得到和普通模式一樣的結果,步驟一樣就不再重複。

小結;

本次主要分享Jeb動態調試相關內容:

1.調試快捷鍵:
「Q」→ 將smali轉換爲僞代碼
「Ctrl+B」→設置斷點

2.普通模式調試的步驟:
(1)找到checkSN方法 ,Ctrl+B設置斷點。
(2)運行被調試的應用,點「Debugger」選項下的「Start」按鈕開始調試。
(3)點擊彈窗裏「確定」按鈕。
(4)點擊「Attach」窗口下方的「attach」按鈕開始調試
(5)輸入「用戶名」「***」,點擊「註冊」按鈕,程序會在設置斷點的位置斷下來了。
(6)分析調試得到正確的「***」。

3.debug模式調試的命令:
adb shell am start -D -n 應用程序包名/應用程序入口界面。

今天的內容到這人就已經分享完成了,喜歡就點個關注唄,給博主一點動力啊

如果你也對安卓逆向感興趣。可以加下方的羣,大家一起討論問題,或者掃描下方二維碼,關注回覆 「安卓逆向」 獲取免費教程

安卓逆向交流學習:1139349849
vx:Yjxiaox

在這裏插入圖片描述