移動安全-jeb gdb ida三大動態調試方法

很多時候在對apk分析時,靜態調試顯得蒼白無力,需要我們手動算很多東西,而動態調試則可以直接觀察結果,一般的方法都需要再手機端運行服務纔可以進行調試,下面我們就來學習一下三個調試方法

jeb動態調試

使用jeb打開我們的22.apk文件

見名知意,Certificate:證書,Bytecode:字節碼,Resources:資源文件。

雙擊Bytecode,會打開兩個窗口,Bytecode/HierarchyBytecode/Disassembly

兩個窗口都顯示的是相當於用baksmali反編譯後smali下所有文件。
Bytecode/Disassembly是包含在Disassembly一個文件中。
Bytecode/Hierarchy則是以樹形結構顯示。

Bytecode/Hierarchy中雙擊指定文件如MainActivity,則會自動定位到Bytecode/Disassembly中對應的定義中。

也可以直接定位到方法和變量中。

 

標記斷點

在Smali中鼠標單擊選中行後,快捷鍵Ctrl+B可以標記和取消斷點。

開始調試

需要保證一些條件

查看androidmanifest.xml 的 debuggable

連接手機,設置好斷點後,運行設備上被調試的應用,點擊菜單欄上調試按鈕開始調試。

(但是我沒有root的手機 ,所以下面的是雲調試。。)

可以實現多種調試功能 單步 步入 步過等

可以查看當前寄存器值 VM/LOCLS

小例子

使用JEB打開文件,分析瀏覽器跳轉apk的原理。這就像我們正在網頁瀏覽百度,突然跳出來一個提示 可以在百度app中查看,點擊之後就進入了app,然後繼續

剛纔的內容瀏覽,這實際上是一個基於標籤的apk跳轉功能,我們來分析一下

在manifest中尋找打開瀏覽器的事件

關鍵詞爲android.intent.category.BROWSABLE,這就是通過瀏覽器可以跳轉的功能

找到對應的scheme 和 acctivity  這兩個是對應的跳轉事件 和 對應的標籤

<activity android:launchMode="singleTask" android:name="com.baidu.searchbox.share.social.share.handler.QQFriendShareReceiverActivity">

在二進制代碼中找到事件具體代碼

QQFriendShareReceiverActivity 直接在bytecode中搜索就可以 可能很慢的

點擊反彙編找到源代碼,可以找到類中的oncreat事件 觀察是如何進行傳遞參數和處理的,是否有邏輯漏洞

可以觀察事件 及參數。

 

我們還可以看到事件的標籤 用於在外部網頁中可以引導調用apk

在外部網頁調用時 需要編寫帶有固定標籤的網頁

<a href=“tencent1106087470://baidu.com“>歡迎來到新世界</a>

 

IDA的動態調試

設置調試斷點

IDA需要將apk文件和IDA pro安裝目錄下IDA 6.8\dbgsrv\androd_server文件上傳到手機,並修改執行權限,命令如下

adb push 22.apk /data/local/tmp/
adb push android_server /data/local/tmp/
adb shell chmod 777 /data/local/tmp/22.apk
adb shell chmod 777 /data/local/tmp/android_server

調試步驟

1  開啓android_server,監聽23946端口,與IDA pro通信,命令如下

1.  adb shell /data/local/tmp/android_server

2. 分開執行也可以
adb shell 
cd /data/local/tmp
./android_server

開啓新的cmd 設置端口轉發

adb forward tcp:23946 tcp:23946

打開IDA pro,開啓界面選擇go,進入IDA 主界面,選擇Debugger->run->Remote ARMLinux/Android debugger/,配置如下

點擊OK,就會啓動android的mytest程序,此時會斷在linker的__dl__start函數中,如圖所示

 

我們一般使用的是attach 選擇我們的程序

進入之後可以通過view下不同地方的斷點,不過由於沒有root是看不見其他app的

ida也可以通過正常的調試 而不是進行attach  

 

GDB動態調試方法

首先說一下大體的步驟:

1. 先要在目標手機的/data目錄下把gdbserver push到這個/data/local/tmp目錄下,然後運行chmod 777 gdbserver增加執行權限。

2. 在目標手機上運行你要調試的APP,獲取這個APP的進程號,比如是18440,然後在目標手機的命令行下執行./gdbserver :1234 --attach 18440,輸出如下:

# ./gdbserver :1234 --attach 18440                         

Attached; pid = 18440

Listening on port 1234

表示已經attach到進程2559上了,在tcp端口1234上監聽,gdb這邊只要也連上1234這個端口就可以了。

3. 在開發機這邊的命令行上面啓動gdb,然後執行shell命令(shell adb forward tcp:1234 tcp:1234),表示通過adb映射tcp端口1234,命令中前面的是local的端口,後面的是remote的端口,然後再執行命令(target remote localhost:1234)

使用gdb調試的話需要gdbserver,就像IDA中一樣將該部分push到手機上,然後調服務,開端口,具體的過程如下:

(別介意 當時忘記點同意調試了)

然後push文件到手機

查看一下進程 找到我們需要的

第二列的18344就是我們的目標進程

>adb push gdbserver /data/local/tmp
>adb shell
cd /data/local/tmp
chmod 777 gdbserver
./gdbserver --attach tcp:31137 18344

這裏常見的錯誤: ./gdbserver: not executable: 32-bit ELF file

原因是我們使用的是arm的ABI(arm爲處理器的一種,還有x86等)

所以我們要相應的手機 或者安裝對應ABI爲arm的虛擬機纔可以執行。

沒有root的設備,要使用gdbserver 調試app 會遇到權限問題。(emulator 沒有問題)

1|shell@mako:/data/local/tmp $ ./gdbserver :31137--attach 18344
Cannot attach to lwp 18344: Operation not permitted (1)
Exiting

Android 系統提供了一個run-as 命令來暫時切換用戶,但是這個命令有限制,必須是app 打開了debuggable才行,否則會報 Package xx is not debuggable 的錯誤。

run-as system_server /data/tmp/gdbserver --attach 31137 :18344

看看我們這個app有沒有這個標誌

這裏無法使用是因爲沒有root

 

然後是設置端口轉發

關於gdb的使用就不多說了 前面已經講解了。

 

https://blog.csdn.net/qq_35559358/article/details/79984935

 https://www.cnblogs.com/xunbu7/p/8086091.html

原文:https://blog.csdn.net/doomvsjing/article/details/73695476 

https://www.cnblogs.com/lao-liang/p/5111399.html

https://blog.csdn.net/itluochen/article/details/52262020

原文:https://blog.csdn.net/Kudou_Shinichi/article/details/79682575 

來源: https://www.cnblogs.com/chen110xi/p/6612437.html

https://blog.csdn.net/weixin_39142112/article/details/80356244、

https://www.cnblogs.com/ouyangping/p/6366461.html

原文:https://blog.csdn.net/wangsfine/article/details/51205564 

https://www.jianshu.com/p/8e8ed503d69b

https://www.cnblogs.com/gordon0918/p/5581597.html

https://blog.csdn.net/beyond702/article/details/50427640 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章