4.1IDA基礎設定--《惡意程式碼分析實戰》
1.載入一個可執行檔案
① 選項一:當載入一個檔案(如PE檔案),IDA像作業系統載入器一樣將檔案對映到記憶體中。
② 選項三:Binary File:將檔案作為一個原始的二進位制檔案進行反彙編,例如檔案帶有shellcode、其他資料、加密引數,甚至裡面帶有可執行檔案,如果檔案還是以正常形式載入到IDA中,這些東西是不會被載入到記憶體中的,因此應該將檔案作為二進位制檔案進行反彙編。
③ Manual load:選擇後可以指定這個檔案要載入的新的虛擬機器地址,並且還會詢問是否要逐個載入每一個節。
注:在預設情況下,IDA Pro的反彙編程式碼中不包含PE頭或者資源節,而這些地方經常被惡意程式碼用來隱藏惡意指令。
2.反彙編視窗
(1)設定
Options->General->選擇Line Prefixex(記憶體位置顯示)並設定Number of Opcode Bytes為6(顯示程式碼清單中每條指令的操作碼值)
3.載入庫以顯示標準符號常量
View->Open Subviews->Type Libraries 來檢視當前被載入的庫,一般mssdk和vc6win會被自動載入,我們也可以右鍵載入一些其他的庫。惡意程式碼經常需要使用本地Api,要獲取本地Api的符號常量,需要載入ntapi庫。
匯入exe檔案
將對應版本cpp檔案拖入到IDA中,點選OK,
等待後點擊空格,進入彙編,
選擇View --》open SubView --》String --》雙擊相關字串 --》 進入定義,
右鍵彙編程式碼 --》選擇Jump to xref to operand交叉引用 --》跳轉到彙編語句。
快捷鍵
使用F5將彙編自動轉換成虛擬碼。通過Jump-Jump to pseudocode (Tab)跳回到對應的原始碼。
彙編指令右鍵,選擇Graph View進入檢視。
檢視選中,空格鍵進入彙編指令。
儲存
ctrl+F5
退出
選擇最後一項Dont save the database不儲存資料
修改彙編與打補丁
點選要修改的指令
點選Edit,選擇Patch program->Assemble
輸入要修改成的彙編(這裡是一次修改一個位元組,需修改多個位元組要執行多次此操作
點選Edit,選擇Patch program->Apply patches to input File,把補丁應用到輸入的檔案
點選Create backup可以儲存備份
注意:在IDA中打錯了補丁就不能恢復了。