【问题标题】:How can I inject a native dll from C# application using SetWindowHookEx (and is it safer than injecting with CreateRemoteThread)如何使用 SetWindowHookEx 从 C# 应用程序注入本机 dll(它是否比使用 CreateRemoteThread 注入更安全)
【发布时间】:2011-11-09 17:31:00
【问题描述】:

首先,我不想监控键盘或鼠标,我只想将我的dll加载到其他进程的地址空间中。我目前正在使用外部非托管 dll 执行此操作,该 dll 执行 WriteProcessMemory、VirtualAllocEx 和 CreateRemoteThread。但这通常被检测为病毒。 SetWindowsHookEx 对于防病毒软件会更安全吗?如果是这样,如何在 C# 中使用它 - 我应该使用什么 WH_* 值?

编辑: 我的 DLL 是非托管的(用 C 编写)

【问题讨论】:

  • 那么你想要一个使用 C 语言的 SetWindowsHookEx 的例子吗?挂钩的类型取决于您希望何时调用该挂钩。
  • 您的防病毒软件将其标记为可疑的原因是因为将代码注入其他进程通常是一件坏事 (TM)。如果您设法通过 WPM/VAX/CRT 以外的其他方式实现此目的,您仍然会被防病毒软件标记,因为他们不反对 CRT - 他们反对您尝试将代码注入另一个进程。

标签: c# c winapi hook code-injection


【解决方案1】:

您的 C# 代码类似于您的本机代码,使用 PInvoke 调用 Virtual* 函数。

如果您的本机代码检测到,防病毒程序不太可能检测不到它。

听起来问题在于防病毒软件,而不是您的代码。

尽管您可能能够在一定程度上缓解这种情况,但如果您的应用经过数字签名并且证书链接到受信任的网站,则根据防病毒供应商的不同,他们可能会毫无问题地允许这种挂钩(用于基于计算机的培训......)根。

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2012-03-16
    相关资源
    最近更新 更多