代码之家  ›  专栏  ›  技术社区  ›  Collin Dauphinee

“安全”DLL注入

  •  3
  • Collin Dauphinee  · 技术社区  · 15 年前

    不好意思,这个问题不太好。

    我有一个程序,当从资源管理器打开一个文件(即调用shellexecute(a/w))时需要发出警报。

    不幸的是,微软删除了COM接口(ishellexecutehook),它允许你在Vista和更高版本中挂接这些事件,据说是因为旧的代码可能会由于更改而导致崩溃。有一种方法可以重新启用此功能,但它不再有效。

    我做了一些研究,它看起来唯一能捕获对shellexecute的调用的方法是将调用重新路由到shell32.dll。目前,我正在考虑将自己的dll注入到资源管理器进程中,然后将shellexecute的IAT条目复制到我的dll中的某个地址分配中,最后修改shellexecute的IAT条目以指向我的函数,该函数将通知程序打开了一个文件并跳转到原始shellexecute函数,该函数的地址为我们之前储存的。

    我最担心的是抗病毒药物。他们会介意我给探险家注射吗?他们会介意我修改IAT吗?

    另一个问题是,这是否安全;Explorer的安全权限是否可能(或更可能)不允许通过CreateMemoteThread进行注入?如果是这样,有没有更好的方法来进行注射?

    总的来说,有没有更好的方法可以做到这一点?

    编辑:对于将来遇到这种情况的任何人来说,explorer.exe没有shell32.dll的IAT;它有一个头部,但thunk中充满了垃圾值,因此无法(据我所知)检索任何导入函数的条目。
    看起来代码隧道是钩住这个的唯一方法。

    4 回复  |  直到 13 年前
        1
  •  3
  •   AaronLS    15 年前

    大多数好的反病毒启发式方法应该在导入表修补时作为特洛伊木马的红色标志。

    Madcodehook的在线文档有一些关于各种代码注入技术及其优点/缺点的扩展文章,并且API提供了一些指定“安全”挂钩的选项: http://www.madshi.net/madCodeHookDescription.htm

        2
  •  3
  •   gdunbar    15 年前

    迂回图书馆:

    http://research.microsoft.com/en-us/projects/detours/

    Microsoft Research允许任意挂钩函数。你可以试一试。

        3
  •  3
  •   Dan Cristoloveanu    15 年前

    关于API挂钩的更多资源:

    易钩: http://www.codeplex.com/easyhook

    Deviare: http://www.nektra.com/products/deviare-api-hook-windows/

    一篇有趣的文章: http://www.codeproject.com/KB/system/hooksys.aspx

    在进行API连接时,评估需要运行的环境非常重要。 例如,并非所有库都支持x86/x64。

    迂回道仅支持许可(付费)版本的X64。 Easy Hook支持x86和X64。

        4
  •  -2
  •   Pongo.    13 年前

    Windows Vista和Windows 7中的Windows资源管理器甚至不调用ShellExecuteA或ShellExecuteW。

    没必要麻烦。LOL:-)

    而且,如果我可以添加的话,我已经通过使用32位和64位内联钩子钩住这两个函数进行了测试。

    对不起的。LOL:-)