如何使用 SetWindowHookEx 从 C# 应用程序注入本机 dll(比使用 CreateRemoteThread 注入更安全)
首先,我不想监视键盘或鼠标,我只想将我的dll加载到其他进程的地址空间中。我目前正在使用外部非托管 dll 执行此操作,该 dll 执行 WriteProcessMemory、VirtualAllocEx,然后执行 CreateRemoteThread。但这通常被检测为病毒。对于防病毒软件来说,SetWindowsHookEx 会更安全吗?如果是这样,如何从 C# 使用它 - 我应该使用什么 WH_* 值?
编辑: 我的 DLL 是非托管的(用 C 编写)
First of all, I don't want to monitor the keyboard or mouse, I only want to load my dll into the other process's address space. I'm currently doing this with external unmanaged dll which does WriteProcessMemory, VirtualAllocEx and then CreateRemoteThread. But this is usually detected as a virus. Will the SetWindowsHookEx be safer for the antiviruses? And if so, how to use it from C# - what WH_* value should I use?
EDIT:
My DLL is unmanaged (written in C)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的 C# 代码将类似于您的本机代码,使用 PInvoke 调用 Virtual* 函数。
如果您的本机代码能够被防病毒程序检测到,那么它不太可能被检测到。
听起来好像防病毒软件有问题,而不是您的代码。
尽管您可能能够在一定程度上缓解它,但根据防病毒供应商的不同,如果您的应用程序经过数字签名并且证书链接到受信任的根,他们可能会允许这种挂钩(用于基于计算机的培训......)而不会出现问题。
Your C# code would be analogous to your native code, using PInvoke to call the Virtual* functions.
It is unlikely it wouldn't be detected by an antivirus program, if your native code is.
It sounds like the antivirus is the problem, and not your code.
Although you might be able to mitigate it somewhat, depending on the antivirus vendor they may allow this sort of hooking (for computer based training...) without issue if your app is digitally signed and the cert chains up to a trusted root.