FS寄存器指向当前活动线程的TEB结构(线程结构)
偏移 说明
000 指向SEH链指针
004 线程堆栈顶部
008 线程堆栈底部
00C SubSystemTib
010 FiberData
014 ArbitraryUserPointer
018 FS段寄存器在内存中的镜像地址
020 进程PID
024 线程ID
02C 指向线程局部存储指针
030 PEB结构地址(进程结构)
034 上个错误号
得到KERNEL32.DLL基址的方法
assume fs:nothing ;打开FS寄存器
mov eax,fs:[30h] ;得到PEB结构地址
mov eax,[eax + 0ch] ;得到PEB_LDR_DATA结构地址
mov esi,[eax + 1ch] ;InInitializationOrderModuleList
lodsd ;得到KERNEL32.DLL所在LDR_MODULE结构的InInitializationOrderModuleList地址
mov edx,[eax + 8h] ;得到BaseAddress,既Kernel32.dll基址
获取KERNEL32.DLL基址
本文介绍如何通过FS寄存器获取TEB结构,进一步读取PEB结构地址,最终定位到KERNEL32.DLL的基址。具体步骤包括:从FS:[30h]读取PEB地址,从PEB结构中读取PEB_LDR_DATA地址,遍历模块列表找到KERNEL32.DLL对应的LDR_MODULE结构,从而得到DLL基址。
1577

被折叠的 条评论
为什么被折叠?



