|
作者:Tesla.Angela
今天介绍的东西,与其说用来保护注册表,不如说是介绍一种比较罕见的操作方式:DKOH(直接内核对象挂钩)。WINDOWS系统在遍历注册表的时候,会调用“注册表对象”(类似于进程对象EPROCESS的结构体)里记录的一个函数指针(HvpGetCellMapped)。通过修改这个记录(就是HOOK),即可截获所有对注册表的枚举操作。当发现遍历到特定的注册表对象时,进行特定处理即可实现隐藏注册表。处理逻辑比较简单:先调用原来的HvpGetCellMapped,如果发现此函数返回的是要隐藏的注册表对象,就找到这个注册表对象的下一个注册表对象,然后返回下一个注册表对象。由于WINDOWS没有公开注册表内部的结构体信息,而在操作过程中又需要大量使用未公开结构体,所以这份代码就支持到WIN7为止了。WIN8的注册表内部结构体发生了较大的变化,代码就不适用了。程序的效果是隐藏注册表键“\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Services\\agp440”。最后声明:这种方法是我学驱动时一个朋友教我的(至于是谁原创就无法追究了),但我做了修改,使之支持32位的WIN2000~WIN7。
|
|