ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
阅读:2688回复:8

NtOpenKey 直接调用返回 0xC0000005

楼主#
更多 发布于:2007-02-27 16:51
  NtOpenKey 直接调用返回 0xC0000005

把它插入到系统工作者线程可以调用成功,可是得到的 HANDLE hKey 是在系统进程下的.....

汗~~怎么办?怎么办?怎么办?
Thinking
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-02-27 17:43
是不是参数 PHANDLE 或者 POBJECT_ATTRIBUTES  的空间不能是驱动的堆栈的,要在应用层分配?
Thinking
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-03-05 08:01
InitializeObjectAttributes/OBJ_KERNEL_HANDLE
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-03-05 09:54
InitializeObjectAttributes/OBJ_KERNEL_HANDLE
这个参数我试了很多遍了,加或不加都是 0xC0000005,对了,我的操作系统是 XP SP2
Thinking
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-03-05 10:04
RtlInitUnicodeString(&UnicodeRegPath, RegPath);
    InitializeObjectAttributes(
                                &ObjectAttributes,
                                &UnicodeRegPath,    
                                OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,    //  
                                                        NULL,
                                NULL
                                );
其中的 RegPath 是 \\REGISTRY\\MACHINE\\SYSTEM\\services\\... 这里有什么问题?
Thinking
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-03-05 10:16
比较困惑,同样的参数让系统工作者线程完成就没有问题.......在应用程序进程下直接调用就是 0xC0000005
Thinking
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-03-08 10:16
有人知道答案么?
Thinking
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-03-14 08:23
首先Ntxxx必须在system thread context中运行,否则就是0xC0000005。其次我说的意思是用InitializeObjectAttributes/OBJ_KERNEL_HANDLE,这样你得到的handle可以在非system thread context中被Zwxxx使用(只是MS说这样不安全 )。

其实你就用个worker thread来调用Ntxxx也很简单
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-03-16 09:47
谢谢回复
非常感谢你的回复,貌似可以放分的,怎么给你分呢?我在发贴的那里没找到,是建帖子的时候设置的么?

首先Ntxxx必须在system thread context中运行,否则就是0xC0000005。

在我 HOOK 的函数中 PsGetCurrentProcessId 得到的是应用程序的 ID,但是线程上下文是 system thread context ?这是怎么做到的?

其次我说的意思是用InitializeObjectAttributes/OBJ_KERNEL_HANDLE,这样你得到的handle可以在非system thread context中被Zwxxx使用(只是MS说这样不安全 )。其实你就用个worker thread来调用Ntxxx也很简单

我的确是用 worker thread 来实现的,但是得到的句柄在 kernel 下可以用,却不能给应用层用,怎么样才能得到给应用层用的句柄呢?
Thinking
游客

返回顶部