首页
社区
课程
招聘
[求助]由FS寄存器如何得到kernel32.dll地址
发表于: 2009-7-28 15:19 4888

[求助]由FS寄存器如何得到kernel32.dll地址

2009-7-28 15:19
4888
本地线程的栈里偏移18H的指针指向kernel32.dll内部,而fs :[ 0x18 ] 指向当前线程而且往里四个字节指向线程栈,结合栈顶指针进行对齐遍历,找到PE文件头(DLL的文件格式)的“MZ”MSDOS标志,就拿到了kernel32.dll基址。

xor esi , esi

mov esi , fs :[ esi + 0x18 ] // TEB

mov eax , [ esi + 4 ] // 这个是需要的栈顶

mov eax , [ eax - 0x1c ] // 这句是什么意思?

find_kernel32_base :

dec eax // 开始地毯式搜索Kernel32空间,dll文件64K对其加载到内存中,每次加1不是很没效率?

xor ax , ax

cmp word ptr [ eax ], 0x5a4d // "MZ"

jne find_kernel32_base // 循 环遍 历 ,找到 则 返回 eax

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
这个似乎取的是SEH Handler进行搜索,涉及到的结构用Windbg查看就行了~
2009-7-28 17:34
0
游客
登录 | 注册 方可回帖
返回