$ DLL劫持实验 - 使用AheadLib工具
参考文档:
实验过程:https://www.write-bug.com/article/1883.html
如何判断程序是32位还是64位:https://blog.csdn.net/qq_23308823/article/details/54898119
使用VS2010编译64位DLL:https://blog.csdn.net/l527719041/article/details/77434652/
工具来源:
AheadLib:https://bbs.pediy.com/thread-224408.htm
PEview:https://www.onlinedown.net/soft/977166.htm
Process Monitor:http://www.pc6.com/softview/SoftView_15853.html
一、背景
由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。首先会尝试从当前程序所在的目录加载DLL,如果没找到,则在Windows系统目录中查找,最后是在环境变量中列出的各个目录下查找。利用这个特点,先伪造一个系统同名的DLL,提供同样的输出表,每个输出函数转向真正的系统DLL。程序调用系统DLL时会先调用当前目录下伪造的DLL,完成相关功能后,再跳到系统DLL同名函数里执行。这个过程用个形象的词来描述就是系统DLL被劫持(hijack)了。
DLL加载过程:
- 程序所在目录
- 程序加载目录
- 系统目录即SYSTEM32目录
- 16位系统目录即SYSTEM目