挂钩或监控服务创建

时间:2011-03-02 19:59:16

标签: windows api hook

我在这里结束了。我已经尝试了三个星期来获取这些信息。在我继续之前,我想让你知道我不是在这里写恶意软件。然而,我正在编写一个监视恶意软件行为的二进制分析工具。

我想要完成的是挂钩或监视CreateServiceW和CreateServiceA。原因是我想知道调用CreateService的进程是什么,以及通过调用注册为服务的二进制文件是什么。

我尝试了从编写钩子ZwRequestWaitReplyPort到拦截LPC消息,编写advapi32.dll的代理DLL,以及为CreateService函数编写内联钩子。然而,这些方法都没有产生结果。代理DLL在测试中很有前途,但是当system32中的官方DLL被代理(BSOD)替换时,它不起作用。如果我可以获得DLL所在的映射存储区域的写访问权,那么内联钩子就可以工作。但是不管我的时间不多了,我都迫切需要一个替代方案。

我看过SetWindowsHookEx,似乎有可能拦截从进程发送到services.exe的消息......但我不确定。

任何人都可以指出我的方向......我求你了。

1 个答案:

答案 0 :(得分:0)

“如果我可以获得DLL所在的映射存储区域的写访问权,那么内联钩子就可以工作。”

如果它是您完全控制的系统,为什么您没有对内存的写入权限?

使用VirtualProtect将权限更改为RWX并挂钩.ADVAPI32 CreateService例程只是通过api-ms-service-management-l1-1-1.dll转发到sechost.dll的存根(由于MinWin)所以已经有一个简单的呼叫指令来挂钩。