搜索PEB結構獲取Kernel32.dll基址

    TEB偏移0x30處,即FS:[0x30]地址處保存着一個指針,指向PEB,PEB結構的偏移0xC處保存着另外一個指針ldr,該指針執行PEB_LDR_DATA

image

    該結構的後三個成員是指向LDR_MODULE鏈表結構中相應三條雙向鏈表頭的指針,分別是按照加載順序、在內存中地址順序和初始化順序排列的模塊信息結構的指針。

image 

    Peb->Ldr->InitializationOrderModuleList指向按照初始化順序排序的第一個LDR_MODULE節點的InInitializationOrderModuleList成員的指針,在WinNT平臺下,該鏈表頭節點的LDR_MODULE結構包含的是NTDLL.DLL,而鏈表的下一個節點所包含的就是Kernel32.dll相關的信息。

  彙編核心代碼:

MOV EAX, DWORD PTR FS:[30] ;獲取PEB基址
MOV EAX, DWORD PTR DS:[EAX+C] ;獲取PEB_LDR_DATA結構指針
MOV ESI, DWORD PTR DS:[EAX+1C] ;獲取InInitializationOrderModuleList成員指針
LODS DWORD PTR DS:[ESI] ;獲取雙向鏈表當前節點的後繼指針
MOV EBX, DWORD PTR DS:[EAX+8] ;取其基地址,該結構當前包含的是kernel32.dll
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章