RegMon改造问题,请教大家

njtlxm 2005-09-20 10:01:35
我想对RegMon进行改造,能做到在Hook注册表SetValue操作时,先获取该注册表项值修改之前的原值。
具体操作如下(针对430版本):

在HookRegSetValueKey函数中,GetFullName( KeyHandle, valueName, fullname );代码之后,加入如下代码:

ResultLength = 0;
ntstatus = ZwQueryValueKey(KeyHandle,valueName,KeyValueFullInformation,
pKeyValueInformation,ResultLength,&ResultLength);//获取所需内存空间大小
strcpy(olddata,"STATUS_EMPTY");
if(ResultLength>0){
pKeyValueInformation = ( PKEY_VALUE_FULL_INFORMATION) \
ExAllocatePool( PagedPool, ResultLength);//分配内存空间
ntstatus = ZwQueryValueKey( KeyHandle,
valueName,
KeyValueFullInformation,
pKeyValueInformation,
ResultLength, &ResultLength);//实际取值
if(ntstatus==STATUS_BUFFER_TOO_SMALL)
strcpy(olddata,"BUF TOO SMALL");
else if(ntstatus==STATUS_INVALID_PARAMETER)
strcpy(olddata,"STATUS_INVALID_PARAMETER");
else if(ntstatus==STATUS_OBJECT_NAME_NOT_FOUND)
strcpy(olddata,"STATUS_OBJECT_NAME_NOT_FOUND");
else
strcpy(olddata,"STATUS_SUCESS");

}


现在有两个问题:1、第一次调用ZwQueryValueKey时没有问题,正确返回了所需内存大小,但是第二次调用时,用SoftIce调试,出现问题,不再继续执行接下来的代码了。2、若第二次调用ZwQueryValueKey成功,我如何将获取的注册表项值也同样采用后续的 LogRecord方式返回给用户态程序?我不大会用字符转换的咚咚。

请各位指点,如果我上述方法是错误的,请问各位都是用什么办法实现的?
...全文
48 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
njtlxm 2005-09-23
  • 打赏
  • 举报
回复

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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