在這里總結一下使用過的兩種IDA遠程調試Linux文件的方式:
前提:Windows下安裝了IDA,Ubuntu中安裝了qemu-user
我的環境是:IDA7.0 & Ubuntu16.04(32bit)
(1.1)IDA+linux_server
- 進入到IDA的安裝目錄,找到文件夾/dbgsrv,其中有兩個文件linux_server和linux_server64,分別為32位的服務端和64位的服務端,可根據調試目標進行選擇。並將其復制到Ubuntu中。
- 查看Ubuntu的IP地址,ifconfig命令。
- Ubuntu下運行服務端,因為我的調試目標是32位的,所以我運行linux_server即可。運行后監聽23946端口。
- Windows下打開IDA,並按照下圖進行操作,打開遠程Linux調試器。
- 輸入配置信息:Application為調試目標在Ubuntu下的位置(注意斜線方向),Directory為調試目標在Ubuntu下的路徑,Parameters可以不填;
- Hostname為Ubuntu的IP地址,Port為端口(與linux_server的監聽端口保持一致),Password為Ubuntu系統的開機密碼。
- 點擊OK即可顯示調試的界面(類似於OllyDbg)
- Ubuntu下linux_server的運行框中會顯示提示信息,如下:
(1.2)IDA+linux_server attach
- 首先,還是在Ubuntu下運行服務器,我的系統和調試目標都是32位的,所以運行32位的服務器。
- 在Ubuntu下運行調試目標。
- 在Windows下打開IDA,選擇如下的選項,這次用Attach,連接遠程Linux調試器。
- 設置一些配置信息,IP,端口,開機密碼等。
- 點擊Debug options可以進行更加詳細的調試設置。
- 點擊OK,之后會讓你選擇你要連接的進程是哪個,找到你之前運行起來的調試目標進程就可以了。
(2)IDA+QEMU -g
假如你要在Ubuntu下使用QEMU仿真一些二進制文件,然后還需要調試這些二進制文件,就可以使用qemu自帶的-g選項的調試功能。
- 在Ubuntu下運行起來,-g選項,調試端口12345。
- 返回WIndows,打開IDA,這次使用Remote GDB debugger。
- 輸入IP,端口(和-g后的端口一致)。
- 點擊Debug options進一步進行設置。
- 點擊Set specific options,主要是設置一下最下邊的二進制文件的架構信息。
- 架構信息可以使用readelf -h命令查看ELF文件頭,需要的信息圖中已經划線了。
- 設置完畢,就可以調試了。
(3)設置斷點動態調試
動態調試之前一般都會首先對目標二進制文件做一個簡單的靜態分析,這個時候如果看到感興趣的位置就可以下一個斷點,然后動態起來之后可以查看這個位置的運行情況,這樣的話,調試就是下面的步驟。
- 在IDA中查看二進制文件,在感興趣的位置設置斷點(F2或者點擊左邊小藍點),比如在_start一開始我設了一個。
- 在Ubuntu那邊運行起程序來,我還是用的QEMU -g進行調試。
- 回到IDA這邊,Debugger選項,變成了這個樣子,選它就完事兒了。
- 彈出這個框,依舊選擇熟悉的遠程GDB調試器。
- 然后再去看Debugger選項,又變成了這個樣子,“Start process”開始進程。
- 然后就開始了,程序運行停在設置斷點的位置。
(非常羅里吧嗦的步驟記錄,也僅僅是一個步驟記錄,剛開始接觸,用着不太熟練,所以也來做個小筆記hhh)