$ 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目录
- Windows目录
- PATH环境变量中列出的目录
同时,还通过“Know DLLs注册表项”确定应用程序所要调用的DLL的路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo

本文详细介绍了如何进行DLL劫持实验,分别针对32位程序「360文件粉碎机独立版.exe」和64位程序「Windows计算器」。实验涉及使用PEview分析DLL依赖,通过修改注册表排除受保护的DLL,利用 AheadLib 生成劫持代码,并在VC++6.0或VS2010环境下编译DLL。在实验过程中,展示了如何在360文件粉碎器运行时弹出提示框,并探讨了在64位环境下编译DLL遇到的问题及解决方法。

1637

被折叠的 条评论
为什么被折叠?



