阅读:1977回复:11
物理内存写入......疑惑...求教
关于驱动程序ring0的环境中
物理内存的写入对象: \\Device\\PhysicalMemory 关于这个对象,我总是不太会用。于是参考网上一些大大写的资料。 让我知晓了: 1.打开对象, 大致的对象应该是: RtlInitUnicodeString (&PhysicalMemoryUnicodeString,L\"\\\\Device\\\\PhysicalMemory\"); InitializeObjectAttributes (&ObjectAttributes, &PhysicalMemoryUnicodeString, OBJ_CASE_INSENSITIVE, (HANDLE) NULL, (PSECURITY_DESCRIPTOR) NULL); *pPhysicalMemoryHandle = NULL; ntStatus = ZwOpenSection (pPhysicalMemoryHandle, SECTION_ALL_ACCESS, &ObjectAttributes); 打开对象后,我接着该怎么干哪?请问? |
|
最新喜欢:![]() |
沙发#
发布于:2003-08-21 21:30
汗,难道 ZwMapViewOfSection 会调用ObFrerenceObjectByHandle?
|
|
板凳#
发布于:2003-08-20 12:03
请问,为什么在运行ZwMapViewOfSection 之前,一定要运行ObReferenceObjectByHandle? ObReferenceObjectByHandle简单的说,就是告诉操作系统你想要 使用这个对象,因此他的引用计数加1,如果你不使用了。 就要减一,当一个对象引用计数减少到0的时候,这个对象就 被操作系统free. 如果你要使用一个对象,就要对其计数加一。 问题是,有的函数会帮你加一,你就不需要在加了。 |
|
地板#
发布于:2003-08-19 08:31
不需要得使用ObReferenceObjectByHandle,查看ZwMapViewOfSection的原型
NTSTATUS ZwMapViewOfSection( IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG ZeroBits, IN ULONG CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect ); 可知它要的是SectionHandle,而不是Section object pointer,所以并不需调用ObReferenceObjectByHandle |
|
地下室#
发布于:2003-08-18 19:18
请问,为什么在运行ZwMapViewOfSection 之前,一定要运行ObReferenceObjectByHandle?
我上网看到,有的人就没有运行 ObReferenceObjectByHandle>... 如下: http://www.20cn.net/ns/wz/otherwz/data/20020813022536.htm http://www.pediy.com/bbshtml/BBS5/pediy50415.htm 谢谢! |
|
5楼#
发布于:2003-08-18 16:53
简单的讲就是通过一个对象句柄得到相应的 POBJECT_HANDLE_INFORMATION指针和对象指针,当然如果不能在给定权限下访问就返回失败
|
|
|
6楼#
发布于:2003-08-18 14:25
楼上大大,虽然上面的英文我每个字都懂,可是连成一句话,我就看不懂了,555555,能否解释一下?
|
|
7楼#
发布于:2003-08-18 14:16
ObReferenceObjectByHandle provides access validation on the object handle, and, if access can be granted, returns the corresponding pointer to the object\'s body.
|
|
|
8楼#
发布于:2003-08-18 12:24
ObReferenceObjectByHandle 请问ObReferenceObjiectByHandle 起什么作用? 我看到过别人用,代码如下: ntStatus = ObReferenceObjectByHandle (*pPhysicalMemoryHandle, SECTION_ALL_ACCESS, (POBJECT_TYPE) NULL, KernelMode, &PhysicalMemorySection, (POBJECT_HANDLE_INFORMATION) NULL); 这个函数对pPhysicalMemoryHandle 进行生麽样的操作,请问? |
|
9楼#
发布于:2003-08-18 10:18
ObReferenceObjectByHandle
ZwMapViewOfSection |
|
10楼#
发布于:2003-08-18 09:04
晕..........
在ring 0里还用ring 3的方法????? |
|
11楼#
发布于:2003-08-17 23:30
对了,我可不可以接着,在 驱动程序中用
MapViewOfFile()这个函数来读些物理内存? 代码如下: pMapPhysicalMemory=MapViewOfFile(pPhysicalMemoryHandle,FILE_MAP_READ, 0,PhysAddress,dwSize); 如果可以,请问应该include \"xxxxxxx.h\" 哪一个h文件? |
|