如何停止二级IMPLICITLY加载DLL的DLL劫持
How to stop DLL Hijacking for secondary IMPLICITLY loaded DLLs
例如,COMDLG32.DLL隐式链接到以下系统DLL(以及其他):xmllite.dllmsftedit.dllsrvcli.dllwkscli.dll链接信息.dllnetutils.dllmsi.dll
由于这些由操作系统隐式加载,而不是使用LoadLibrary调用显式加载,因此使用SetDllDirectory
的劫持漏洞解决方法不会影响加载COMDLG32.DLL时执行的这些加载。
因此,在我的应用程序加载后,我按下Ctrl+O使用"打开文件"对话框,这些"坏"DLL(存在于EXE文件夹中)就会被加载。
COMDLG32.DLL正在加载EXE文件夹中的文件,而不是系统文件夹中的合法文件,尽管我早在启动"文件打开"对话框之前就在InitInstace()
中调用SetDllDirectory("");
。
我如何获得系统DLL(例如COMDLG32.DLL),以便正确地将正确的DLL用于其隐式加载的DLL?
SetDllDirectory("")
从DLL搜索路径中删除当前/工作目录,它不会对应用程序目录(.exe所在的位置)产生任何影响。
如果您想将自己限制在system32目录中,可以调用SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32)
。
相关文章:
- 从 wxWidgets 中的.DLL加载图标
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 无法使用c++/cli包装从c#dll加载函数
- 混合延迟 dll 加载和手动调用 LoadLibraryA 是否安全?
- 无法从 dll 加载函数
- 如何设置我的dll加载,该dll取决于Env-ailiable的某些第三部分DLL
- 将本机非托管的C DLL加载到托管的C#应用中,导致DLL输出垃圾
- 无法在 Python 3.5 上导入 cv2 DLL 加载失败
- 当使用“空dllmain”的dll加载链接到DLL时,应用程序无法启动(0xc0000142)
- 如何从DLL加载的DLL链接到函数
- 如何从Java中的C DLL加载和使用结构和功能
- 我可以用具有相同功能名称的多个DLL加载元素吗?
- 窗口挂钩和 dll 加载
- CEGUI-从DLL加载资源
- 什么可能导致时间函数和 DLL 加载之间死锁
- 以下代码是如何工作的(从DLL加载动态类)
- 错误:Visual Studio中没有为opencv_world310.dll加载符号
- 使用 LoadLibraryA 的 dll 加载错误
- 从 WinAPI C 项目中的专用 DLL 加载图像资源
- 模块"MyShellExt.dll"加载失败