搜索PEB结构获取Kernel32.dll基址

本文详细介绍了Windows操作系统中PEB结构的作用及其内部指针的使用方式,特别是PEB_LDR_DATA结构中的ldr指针如何指向不同排序的LDR_MODULE链表,包括初始化顺序链表,以及如何通过汇编语言获取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

转载于:https://www.cnblogs.com/Y4ng/archive/2012/01/07/2315883.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值