使用Windbg查看TEB結構

使用Windbg來查看TEB的結構,只用命令:!TEB即可(注意:如果系統中安裝了360殺毒軟件以及安全衛士,將導致Windbg的此命令以 及其他部分命令不能使用,建議卸載掉360殺毒軟件以及安全衛士)。通過結果可以查看TEB的內部結構,TEB的第一個結構叫做NtTib,它包含8個成 員變量,其中第一個成員變量是_EXCEPTION_REGISTRATION_RECORD結構,它有兩個成員變量,分別爲Next和Handler, 這個結構是用於ring3的異常調試之用。在MASM下編寫過異常處理的都會熟悉一下代碼:

push _ExceptionHandle

push fs:[0]

mov fs:[0],esp

這段代碼是編寫異常處理經常用到的,其原理就是使用了此結構以及FS的知識,相關資料可以到網上查詢。

再NtTib的0x18偏移處是Self的指針,它指向NtTib本身,同時NtTib又是TEB結構的第一個成員變量,所以

mov eax,fs:[18h]//以fs爲段選擇器

此時的eax就指向了TEB結構本身,也就是Self指向了TEB結構。

在TEB的0x30處是PEB結構,所以

mov eax,[eax+30h]//以ds爲段選擇器

此時的eax已經指向了PEB結構。在Windbg中可以通過下列方法來獲得PEB結構的地址:

1.>dt ntdll!_TEB的方式來查看TEB結構的具體內容,並從中可以查看到PEB的地址。

2.>!teb同樣可以查看。

3.>r $peb直接打印處peb的地址

4.>dd $teb+30 L1可以直接查處位於teb+30處的peb的地址

通過此中方法即可獲得各種TEB結構的指針進行相關的編程。參考文獻([1])

***********參考文獻**************************************************************

[1] 通過TEB/PEB枚舉當前進程空間中用戶模塊列表;

http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FMSDN%2FIndividualSpecial%2Fhellguard%2FM.1060672344.20


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章