動態除錯so

2021-08-14 10:27:51 字數 1101 閱讀 9999

1. 找乙個root過的手機, 把ida pro 安裝目錄下的android_server 放到 手機根目錄下/data裡面,  要注意的是, 即便是root過的手機, /data這個目錄對外也只是唯讀的許可權, 所以必須要調公升許可權才可以, 如果手機用的就是re 檔案管理器的話, 那就最好了, 直接可以操作.  

2, 這個檔案拷貝進去之後, 還要把android_server的x 執行許可權開放, 讓他可以執行.  同樣可以用re 檔案管理器來弄.

3. 執行上一步之後, android_server 就會監聽23946這個埠.

4, 然後使用adb forward tcp:23946 tcp:23946  讓手機裝置跟電腦可以通訊

5, 執行要除錯的程式, 

6, 開啟ida, 選擇go,  然後debugger-> attach to process,   在彈出的面板中選擇127.0.0.1, 密碼不需要填, 直接ok 就可以了

7, 然後會彈出乙個面板上面顯示了當前手機所有正在執行的程序, 雙擊要除錯的程序, 就會進入到要除錯的程序處.  首先會觸發libc, 這是因為ida 的預設設定是在開啟乙個so 的時候就會中止程式, 

8, 然後這個時候, 我們ctrl s 開啟所有的so 的面板, 看要跟蹤的那個so 在記憶體中對映的起始位置, 然後靜態分析的時候,要找到自己需要除錯的那個方法的相對偏移量, 相加就是在記憶體中這個方法的位置, 然後關閉這個面板, 按下g 鍵, 就會彈出要go 的位置, 天上我們剛剛計算出來的位址.

9, 這個時候就會進入到我們要除錯的方法的地方,  一開始的時候, 可能顯示的全是dcb, 按下p 鍵就會恢復成彙編**, 然後在需要除錯的某一行指令左邊的點  按一下, 變成紅色, 就代表打斷點成功了, 

10, 按下左上角的三角形開始執行, 然後 觸發會執行這個so方法的操作,

11, 有時候當你按下執行的時候, 會在最開始的libc 那個位置, 報錯誤, 這個時候, 直接在debugger->debugger option 在彈出的面板中選擇edit exception,  把會遇到的錯誤訊號, 如果不影響程式執行的話, 就直接把suspend program 點掉, 也就是說即使收到這個訊號, 也不要中止程式, 讓程式繼續執行就可以了.  

12, 然後就可以除錯了

IDA動態除錯so檔案

1 將ida安裝目錄的 dbgsrc android server或者 android server nonpie複製到虛擬機器的data資料夾 2 使用ida開啟so檔案 4 配置虛擬機器端的監聽 5 使用adb forward命令進行埠的 將裝置被除錯端的埠 到遠端除錯端中 6 設定ida的de...

gdb除錯動態鏈結so

gdb file 你的exe gdb load 你的so 這條應該是可選的 gdb dir gdb sharedlibrary 你的so gdb breakpoint 你的so中somewhere gdb run load 是將動態庫加載入記憶體。sharedlibrary是將動態庫的符號讀入gdb...

gdb除錯動態鏈結so

gdb file 你的exe gdb load 你的so 這條應該是可選的 gdb dir gdb sharedlibrary 你的so gdb breakpoint 你的so中somewhere gdb run load 是將動態庫加載入記憶體。sharedlibrary是將動態庫的符號讀入gdb...