IDA\Windbg調試


IDA靜態反匯編技巧

一、通過添加類型庫

二、添加結構

  在Structures窗口中顯示當前可用結構信息,可手工添加結構,也可導入結構,有二種方法導入:

  A、通過定義一個c語言的頭文件,將結構定義寫在頭文件中,然后通過菜單Load File->Parse c header file導入文件中定義的結構

  B、在Structures窗口中,按INS鍵添加結構,這時彈出對話框底部有個按鈕Add stndard structure,點此按鈕,在彈出的類型庫中選擇結構導入

 

IDA\Windbg動態調試

一、查看模塊信息

kd>lm  //查看當前已加載模塊信息,包括起始地址及長度

kd>lvDvm+模塊名  //查看指定模塊信息 

kd>x modulename!functionname   //查看模塊內函數地址信息,函數名可使用通配符* x:examine,

kd>u  modulename!functionname  //查看函數匯編

kd>uf  modulename!functionname  //查看函數全部匯編代碼

 二、根據模塊信息及函數來設備斷點

kd>bp 函數地址/函數符號名

 

 

 

一、內存查看:d (db,dd,dw,dq分別以不同字節數來查看內存)

kd>dd memoryaddress

 二、k命令:

 .reload -f強制加載符號

 

如何在驅動入口函數(DriverEntry)中斷點:

kd>sxe ld:hookport.sys

kd>g

重新啟動電腦或程序,當模塊hookport.sys被加載時,就會觸發了一個異常而中斷,此時可獲取hookport模塊的基地址

kd>lmvm hookport

再接合IDA查看DriverEntry函數的偏移量,可得到DriverEntry函數的加載地址:

  funaddress=base+offset

kd>bp funaddress

 

IDA調試

IDA中集成Python,在Out Window窗口的底部,選擇Python按鈕,即使用相關對象,注意:Python中命令是大小寫敏感的

查詢Python函數:

Python>dir()  //列出相關函數對象

列出太多的函數,可通過Alt+T查找關鍵字篩選,Ctrl+T查詢下一個

Python>SendDbgCommand('')  //通過Windbg獲取信息

Python>SendDbgCommand('idtr')  //獲取idt信息,信息為字符串,需要轉換為整數

kd>r idtr          //直接通過WinDbg獲取idtr信息

 

IDAPYTHON

很多函數的用法可利用下面的網址:

https://www.programcreek.com/python/example/102513/idc.MakeFunction中查看相關函數的用法,查詢用google+site來做,因為該網站查詢不管用

IDC:

MakeFunction(EA):在EA地址創建函數

MakeFunction(EA,flags):在EA地址創建函數,並加上標簽

調試:

add_bpt(EA):在EA處設置斷點

del_bpt(EA):刪除EA外斷點

 

 

我的IDAPYTHON腳本:

一個在指定模塊相對偏移位置創建函數的示例:

1 base=get_first_module()    #idc函數獲取全局中第一個模塊地址
2 while get_module_name(base)!='\SystemRoot\system32\DRIVERS\mutenx.sys':    #遞歸查找mutenx.sys模塊名,這里使用全路徑,系統剛啟動時為短名
3     base=get_next_module(base)
4     
5 base+=0x3308  #指定函數相對模塊起始地址的偏移,具體可靜態分析模塊文件得到
6 MakeFunction(base)  #創建函數
7 print(hex(base))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM