gpt4 book ai didi

c++ - “安全”DLL 注入(inject)

转载 作者:太空狗 更新时间:2023-10-29 20:19:14 24 4
gpt4 key购买 nike

这不是一个非常好的问题,抱歉。

我有一个程序需要在从资源管理器打开文件时发出警报(即调用 ShellExecute(A/W))。

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

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

我最担心的是防病毒软件。他们会关心我正在注入(inject)资源管理器吗?他们会关心我修改 IAT 吗?

另一个问题是这是否安全;资源管理器的安全权限是否有可能(或更可能)不允许通过 CreateRemoteThread 进行注入(inject)?如果是这样,是否有更好的方法来进行这种注入(inject)?

通常有更好的方法来做到这一点吗?

编辑:对于将来遇到此问题的任何人,explorer.exe 没有 shell32.dll 的 IAT;它有一个 header ,但是这个 thunk 充满了垃圾值,所以没有办法(据我所知)检索任何导入函数的条目。
看起来代码隧道是 Hook 它的唯一方法。

最佳答案

大多数优秀的反病毒启发式算法都应该将导入表修补视为木马的危险信号。

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

关于c++ - “安全”DLL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1764980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com