在這裏總結一下使用過的兩種IDA遠程調試Linux文件的方式: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調試器。
- 點擊Debug options能夠進行更加詳細的調試設置。
- 點擊OK,以後會讓你選擇你要鏈接的進程是哪一個,找到你以前運行起來的調試目標進程就能夠了。
(2)IDA+QEMU -g
假如你要在Ubuntu下使用QEMU仿真一些二進制文件,而後還須要調試這些二進制文件,就可使用qemu自帶的-g選項的調試功能。spa
- 在Ubuntu下運行起來,-g選項,調試端口12345。
- 返回WIndows,打開IDA,此次使用Remote GDB debugger。
- 點擊Set specific options,主要是設置一下最下邊的二進制文件的架構信息。
- 架構信息可使用readelf -h命令查看ELF文件頭,須要的信息圖中已經劃線了。
(3)設置斷點動態調試
動態調試以前通常都會首先對目標二進制文件作一個簡單的靜態分析,這個時候若是看到感興趣的位置就能夠下一個斷點,而後動態起來以後能夠查看這個位置的運行狀況,這樣的話,調試就是下面的步驟。debug
- 在IDA中查看二進制文件,在感興趣的位置設置斷點(F2或者點擊左邊小藍點),好比在_start一開始我設了一個。
- 在Ubuntu那邊運行起程序來,我仍是用的QEMU -g進行調試。
- 回到IDA這邊,Debugger選項,變成了這個樣子,選它就完事兒了。
- 而後再去看Debugger選項,又變成了這個樣子,「Start process」開始進程。
(很是羅裏吧嗦的步驟記錄,也僅僅是一個步驟記錄,剛開始接觸,用着不太熟練,因此也來作個小筆記hhh)3d