乙個可執行檔案被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 汽車類 電腦類...