c – ‘安全’DLL注入
作者:互联网
抱歉,这不是一个非常好的问题.
我有一个程序,需要在从资源管理器打开文件时发出警报(即调用ShellExecute(A / W)).
不幸的是,Microsoft删除了COM接口(IShellExecuteHook),允许您在Vista中挂起这些事件,因为旧版代码可能会因更改而导致崩溃.有一种解决方法可以重新启用此功能,但它不再有效.
我做了一些研究,看起来捕获ShellExecute调用的唯一方法是将调用重新路由到shell32.dll.目前,我正在考虑将自己的DLL注入到资源管理器进程中,然后将ShellExecute的IAT条目复制到我的DLL中的某些地址分配,最后修改ShellExecute的IAT条目以指向我的函数,该函数将通知打开文件并跳转到原始ShellExecute函数的程序,该函数的地址是我们之前存储的.
我最关心的是防病毒.他们会关心我注入探险家吗?他们会关心我正在修改IAT吗?
另一个问题是这是否安全;是否有可能(或者更可能)探险家的安全权限不允许通过CreateRemoteThread注入?如果是这样,有没有更好的方法来进行这种注射?
有没有更好的方法来做到这一点?
编辑:对于将来遇到此问题的任何人,explorer.exe没有shell32.dll的IAT;它有一个标题,但thunk充满了垃圾值,所以没有办法(据我所知)检索任何导入函数的条目.
看起来代码隧道是解决这个问题的唯一方法.
解决方法:
最好的防病毒启发式应该在导入表修补时将其作为特洛伊木马的红旗.
madcodehook的在线文档有一些关于各种代码注入技术的扩展文章,它们的优点/缺点,并且API提供了一些指定“安全”挂钩的选项:
http://www.madshi.net/madCodeHookDescription.htm
标签:c-3,c,winapi,hook,shell32 来源: https://codeday.me/bug/20190730/1583809.html