PEB TEB結構體使用

2021-07-16 02:01:03 字數 4158 閱讀 8168

乙個可執行檔案被os載入到記憶體,並處理完成相關的模組載入,匯入表處理……及其他必須處理後,形成乙個程序。在os核心中儲存有乙份關於這個程序的身份證資訊,就是平常看到的handle,叫程序控制代碼。。。

os完成載入後,fs段暫存器指向當前的teb結構,具體teb結構如下:

kd> dt _teb

nt!_teb

+0x000

nttib : _nt_tib

+0x01c

environmentpointer : ptr32

void

+0x020

clientid : _client_id :當前程序id

+0x028

activerpchandle : ptr32

void

+0x02c

threadlocalstoragepointer : ptr32

void

+0x030

processenvironmentblock : ptr32 _peb 當前程序的peb指標

+0x034

lasterrorvalue : uint4b

+0x038

countofownedcriticalsections : uint4b

+0x03c

csrclientthread : ptr32

void

+0x040

win32threadinfo : ptr32

void

+0x044

user32reserved : [26]

uint4b

+0x0ac

userreserved : [5]

uint4b

+0x0c0

wow32reserved : ptr32

void

+0x0c4

currentlocale : uint4b

+0x0c8

fpsoftwarestatusregister : uint4b

+0x0cc

systemreserved1 : [54]

ptr32

void

+0x1a4

exceptioncode : int4b

+0x1a8

activationcontextstack : _activation_context_stack

+0x1bc

sparebytes1 : [24]

uchar

+0x1d4

gditebbatch : _gdi_teb_batch

+0x6b4

realclientid : _client_id

+0x6bc

gdicachedprocesshandle : ptr32

void

+0x6c0

gdiclientpid : uint4b

+0x6c4

gdiclienttid : uint4b

+0x6c8

gdithreadlocalinfo : ptr32

void

+0x6cc

win32clientinfo : [62]

uint4b

+0x7c4

gldispatchtable : [233]

ptr32

void

+0xb68

glreserved1 : [29]

uint4b

+0xbdc

glreserved2 : ptr32

void

+0xbe0

glsectioninfo : ptr32

void

+0xbe4

glsection : ptr32

void

+0xbe8

gltable : ptr32

void

+0xbec

glcurrentrc : ptr32

void

+0xbf0

glcontext : ptr32

void

+0xbf4

laststatusvalue : uint4b

+0xbf8

staticunicodestring : _unicode_string

+0xc00

staticunicodebuffer : [261]

uint2b

+0xe0c

deallocationstack : ptr32

void

+0xe10

tlsslots : [64]

ptr32

void

+0xf10

tlslinks : _list_entry

+0xf18

vdm : ptr32

void

+0xf1c

reservedforntrpc : ptr32

void

+0xf20

dbgssreserved : [2]

ptr32

void

+0xf28

harderrorsaredisabled : uint4b

+0xf2c

instrumentation : [16]

ptr32

void

+0xf6c

winsockdata : ptr32

void

+0xf70

gdibatchcount : uint4b

+0xf74

indbgprint : uchar

+0xf75

freestackontermination : uchar

+0xf76

hasfiberdata : uchar

+0xf77

idealprocessor : uchar

+0xf78

spare3 : uint4b

+0xf7c

reservedforperf : ptr32

void

+0xf80

reservedforole : ptr32

void

+0xf84

waitingonloaderlock : uint4b

+0xf88

wx86thread : _wx86threadstate

+0xf94

tl***pansionslots : ptr32

ptr32

void

+0xf98

impersonationlocale : uint4b

+0xf9c

isimpersonating : uint4b

+0xfa0

nlscache : ptr32

void

+0xfa4

pshimdata : ptr32

void

+0xfa8

heapvirtualaffinity : uint4b

+0xfac

currenttransactionhandle : ptr32

void

+0xfb0

activeframe : ptr32 _teb_active_frame

+0xfb4

safethunkcall : uchar

+0xfb5

booleanspare : [3]

uchar

__asm

printf("imagebaseaddress:0x%x\n",peb);

需要進行基本的程序是否被除錯的檢測(除錯於antidebug的無止境的戰爭啊……防毒於反……)

_asm

printf("當前系統除錯:0x%x\n",peb);

結構體使用

結構的定義 定義乙個結構的一般形式為 struct 結構名 成員表由若干個成員組成,每個成員都是該結構的乙個組成部分。對每個成員也必須作型別說明。例如 struct stu int num char name 20 int age 結構型別變數的說明 結構體定義並不是定義乙個變數,而是定義了一種資料...

結構體的使用

題目現有4 個學生,每個學生包含學號 三門課成績和平均成績等 4個資訊。首先輸入各位學生的學號 三門課成績 然後計算出每個學生的平均成績 最後輸入乙個學號,當該學號存在時,輸出對應學生的所有資訊,否則,輸出 該學號學生不存在!程式運 況 第一步,輸出兩行提示資訊 請依次輸入 4位學生資訊 學號 成績...

結構體的使用

c語言中新的資料型別 整型 123 浮點型別 小數 字元型別 字元 asfg 陣列也是一種型別 結構體 型別 整數類 int 1,2,3,4.人類 結構體 struct person 人類 需要名字 動物類 結構體 struct anim 動物類 汽車類 結構體 struct car 汽車類 電腦類...