winapi - 使用绝对路径加载 Kernel32.dll 是否更安全?
问题描述
我有一个带有以下行的驱动程序代码
hKernel32DLL = LoadLibrary( "Kernel32.dll" );
现在有人查看了我的代码并建议使用完整路径加载 DLL。我在网上快速搜索了有关加载 kernel32.dll 的信息,但没有人真正使用完整路径。
有人可以向我解释为什么我应该指定 kernel32.dll 的绝对路径吗?
解决方案
使用完整路径加载 .DLL 会更安全。Kernel32 已经加载,因为您静态链接到,LoadLibrary
所以在您的特定情况下它并不重要。(在除 2000 之外的所有 Windows 版本上,CreateProcess
将在进程启动之前将 Kernel32 加载到进程中,但这不适用于 Gdi32 和 User32 等其他核心 .DLL。)
如果您担心 .DLL 劫持攻击,那么您可以SetDefaultDllDirectories
使用LOAD_LIBRARY_SEARCH_SYSTEM32
标志调用,这会强制所有具有相对路径的 .DLL 从系统目录加载。
推荐阅读
- azure - azure - 用户信息 - 获取更多信息
- typescript - 将被减数的交集分配给减数被减数的交集
- php - 如何将主题添加到现有的实时网站
- arrays - 如果不存在键,Laravel 从数组中提取值
- swift - 如何将 UIButton 上的 UIView 作为单击事件的参数传递
- python - 从 SymPy 符号定义函数
- python - 索引错误:索引 512 超出轴 0 的范围,大小为 512
- python - 如何定义一个只接受字符串的函数
- c++ - 无法将参数 1 从 'Object *' 转换为 'const int
- python - 我不止一次从抓取脚本中获得价值