DLL搜索的目录顺序(DLL劫持)

DLL劫持是技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。首先会尝试从当前程序所在的目录加载DLL,如果没找到,则Windows系统目录中查找,最后是在环境变量中列出的各个目录下查找。(一些木马或病毒也会利用DLL劫持技术搞破坏,因此当在应用程序目录下发现系统一些DLL文件存在时,如lpk.dll,应引起注意。)

windows xp sp2系统以上会默认开启SafeDllSearchMode,安全dll搜索模式下DLL文件的搜索顺序如下所示:

(1)可执行程序加载的目录(可理解为程序安装目录比如 C:\Program Files\uTorrent)

(2)系统目录(即 %windir%\system32 )

(3)16位系统目录(即 %windir%\system)

(4)Windows目录(即 %windir%)

(5)运行某文件的所在目录,比如C:\Documents and Settings\Administrator\Desktop\test)

(6)PATH环境变量中列出的目录

写一个dll劫持的思路:

1、构造一个与系统目录下XXX.DLL一样的导出表;
2、加载系统目录下的XXX.DLL;
3、将导出函数转发到系统目录下的XXX.DLL上;
4、在初始化函数中加入我们要执行的代码。

5、将我们自己写的XXX.DLL放在可执行文件的目录,让它有机会加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值