WIN7X64代码禁止应用层创建、枚举服务

WIN7代码禁止应用层创建、枚举服务

WIN7X64代码禁止应用层创建、枚举服务_第1张图片

WIN7的系统服务遍历,是通过RPC远程调用,最后调用NdrClientCall2 进入内核 通知services.exe,services.exe中有张全局的服务表,这张表在WIN7 X64中俺不知道定义,如果要隐藏系统服务,可以对这张表进行修改,但是俺不知道呀咋办!于是有了这个办法。
应用层遍历服务,都要打开SC管理器,而我就是打开SC管理器上面做文章。
打开管理器的API是OpenSCManager,无论你是创建服务 还是 枚举服务,都得先使用这个API,其返回的4字节句柄,根据资料说是返回一个结构体指针,WIN7 X64不得而知其原型。

WIN7X64代码禁止应用层创建、枚举服务_第2张图片
我下断点看看这个API的实现

WIN7X64代码禁止应用层创建、枚举服务_第3张图片
注意红色区域,他会调用ScWaitForStart,看他实现:
WIN7X64代码禁止应用层创建、枚举服务_第4张图片
可以看到他使用OpenEvent打开内核对象
这个内核对象是全局的,经过对services.exe的研究,这个对象是他创建的,用工具证明下
WIN7X64代码禁止应用层创建、枚举服务_第5张图片

因此 只需要关闭这个事件对象,就达到了 加载驱动以及枚举驱动失效的作用
SvcctrlStartEvent_A3752DX 这个名字后面的十六进制,似乎是来自一个固定的UUID,因此不用担心他后面的数字会变化的。
写的时候写成 Global\SvcctrlStartEvent_A3752DX 别问为啥。。上面的反汇编是这样写的
还原下反汇编就是 HANDLE curevent = ::OpenEventW(0x100000, TRUE, L"Global\SvcctrlStartEvent_A3752DX");

如何关闭他,我们可以遍历进程的句柄
然后 dumhandle 然后关闭,也可以采用内核方式

你可能感兴趣的:(邪魔外道)