下面是网上找到的一句话:
如果大家写过shellcode一定还记得,shellcode中开头要找kernel32.dll模块的内存加载地址。
同样,如果大家要写一个内核的类似东东的话,第一步也是要找出ntoskrnl.exe模块的内存加载位置。
不懂什么意思ntoskrnl.exe是windows的一个进程文件,在系统经过预启动和启动阶段后进入内核调用阶段时由Ntldr调用Ntoskrnl.exe
我好想还看到过判断系统使用的是ntoskrnl.exe还是其他的n**.exe忘了名字勒还有 怎么去获取?
如果大家写过shellcode一定还记得,shellcode中开头要找kernel32.dll模块的内存加载地址。
同样,如果大家要写一个内核的类似东东的话,第一步也是要找出ntoskrnl.exe模块的内存加载位置。
不懂什么意思ntoskrnl.exe是windows的一个进程文件,在系统经过预启动和启动阶段后进入内核调用阶段时由Ntldr调用Ntoskrnl.exe
我好想还看到过判断系统使用的是ntoskrnl.exe还是其他的n**.exe忘了名字勒还有 怎么去获取?
解决方案 »
- OpenPrinter函数,当PrinterName参数为空时,是什么意思?
- 如何让窗口显示在最前而又不获得焦点
- SQL语句 在MFC里的使用问题
- 如何在CListBox上加一个右键菜单->下载,点击后下载后弹出一个选择下载路径的对话框??
- 怎么实现CSliderCtrl的位置变化时向外触发消息
- 讨论一个程序的框架
- 一个ActiveX的问题?高分求救,来者给分!!
- 共四百分,等你拿!图像问题!
- 如何精确统计文档中的中文和中文符号的个数?并且中文符号要和中文分开算。
- 急问一个VC++的ADO问题
- MFC tree control 显示在list control控件里怎么实现
- 用vc2003做了个activex插件,想用vs2003做一个安装程序,装完后注册这个插件,如何制作
简单来说,是同一套源代码根据编译选项的不同而编译出四个可执行文件,分别用于:
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