1. 程式人生 > >windows下使用IDA遠端除錯linux(ubuntu)下編譯的程式

windows下使用IDA遠端除錯linux(ubuntu)下編譯的程式

1.背景

真機:win7 x64 ida pro 6.8 虛擬機器:ubuntu 16.04 x64
現在在win7下遠端除錯ubuntu內自己編譯的程式。

2.ubuntu內編譯程式

1.桌面建立test資料夾,並建立hello.c檔案
寫入程式碼:

#include <stdio.h>

int main(void)
{
printf("hello linux!");
return 0;
}

在test目錄開啟終端,輸入gcc ./hello.c -o hello
不出意外將會產生一個hello的檔案。

3.除錯

1.將hello檔案拷貝一份到win7桌面,ubuntu內拷貝到tmp/test/hello 處

2.找到win7中IDA的安裝目錄,在安裝目錄下會有linux_server,linux_serverx64程式,將linux_serverx64拷貝到ubuntu機器上,放在tmp/test目錄下。

3.在ubuntu機器上,chmod a+x ./linux_serverx64 改變檔案屬性,然後通過命令 ./linux_serverx64執行該程式。
這裡寫圖片描述
5.在windows中用IDA找開桌面上的hello檔案,直接在下拉列表框選擇“Remote Linux debugger”。如圖所示:
這裡寫圖片描述
6.在IDA選單中,選擇“Debugger->Process options”,開啟要除錯的程式設定選項,在Application和Input file兩項中輸入ubuntu中要除錯的程式,在Directory中輸入要除錯的程式所在的目錄,在Hostname中輸入linux機器的IP地址,埠保持預設即可,其它的輸入項不用管,確定。如下圖所示:
這裡寫圖片描述

如果ubuntu有密碼,這裡的Password中也可以填上密碼。

7.下斷點,找到main函式,在第一行按F2下斷點:
這裡寫圖片描述

8.按F9或者點選綠色的三角啟動程式。
9.如果彈出下圖的提示,直接點Yes:
這裡寫圖片描述
10.接著可能會出現下圖的彈框:
這裡寫圖片描述
該提示是找不到庫檔案,直接點OK。
出來這個:
這裡寫圖片描述
點Apply。

11.繼續執行,又出來彈框:
這裡寫圖片描述
這個提示在win7下找不到檔案,這步不能忽略,在Destination中要選在我們的被除錯的檔案hello所在的目錄,按照如圖中所示設定。
12.再執行,還可能會彈框:

Please confirm
---------------------------
The DWARF plugin couldn't find DWARF information associated to the file: C:\Users\Administrator\Desktop\r100. Do you want to load an external DWARF file manually? --------------------------- &Yes &No

點yes就再選擇一次win7的檔案,也可以點no.

然後就可以按F8但不除錯了。

如果程式中有輸出,或者輸入是在ubuntu的遠端除錯視窗中輸出或者輸入(第三部的那個視窗中)。

問題解決

1.Could not connect to 192.168.xxx.xxx: 由於連線方在一段時間後沒有正確答覆或連線的主機沒有反應,連線嘗試失敗。
解決辦法:http://www.it165.net/os/html/201404/7757.html