### DLL 劫持原理

Windows 系统在加载一个程序所需的 DLL 文件时，会遵循一个固定的搜索路径。这个路径通常包括：

1. **程序所在目录**：这是优先级最高的。系统会首先在可执行文件所在的文件夹内查找所需的 DLL。
2. **系统目录**：如 `C:\Windows\System32`。
3. **16 位系统目录**：`C:\Windows\System`。
4. **Windows 目录**：`C:\Windows`。
5. **当前工作目录**：程序启动时所在的目录。
6. **环境变量 `PATH` 中指定的目录**。

**DLL 劫持**正是利用了第一条规则。很多软件在编程时，并没有指定所需 DLL 的绝对路径，而是依赖于系统的默认搜索顺序。如果攻击者知道某个程序需要加载一个名为 `abc.dll` 的文件，他们就可以制作一个同名的恶意 DLL，并将其放置在程序所在的文件夹中。当用户双击运行这个程序时，系统会优先加载这个恶意的 `abc.dll`，而不是位于系统目录中的合法 DLL