获取ntoskrnl.exe要干啥

sheart1990 2011-10-03 01:39:28
下面是网上找到的一句话:
如果大家写过shellcode一定还记得,shellcode中开头要找kernel32.dll模块的内存加载地址。
同样,如果大家要写一个内核的类似东东的话,第一步也是要找出ntoskrnl.exe模块的内存加载位置。
不懂什么意思

ntoskrnl.exe是windows的一个进程文件,在系统经过预启动和启动阶段后进入内核调用阶段时由Ntldr调用Ntoskrnl.exe
我好想还看到过判断系统使用的是ntoskrnl.exe还是其他的n**.exe忘了名字勒。。。

还有 怎么去获取?
...全文
74 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
W1nds 2011-10-03
  • 打赏
  • 举报
回复
内核文件有ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe
简单来说,是同一套源代码根据编译选项的不同而编译出四个可执行文件,分别用于:
ntoskrnl - 单处理器,不支持PAE(物理地址扩展)
ntkrnlpa - 单处理器,支持PAE
ntkrnlmp - 多处理器,不支持PAE
ntkrpamp - 多处理器,支持PAE
在Vista之前,安装程序会在安装时根据系统的配置选择两个多处理器或者两个单处理器的版本复制到目标系统中。从Vista开始,会统一使用多处理器版本,因为多处理器版本运行在单处理器上只是效率稍微低一些。
(如果有《软件调试》,可以读一下8.4节P185)

关于获取:
1.ZwQuerySystemInformation
2.遍历LDR_DATA_TABLE_ENTRY
3.从MmSystemRangeStart开始搜索
4.NtSystemDebugControl(这个没具体研究)
5.KPCR - 0x34

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧