DLL劫持实验

DLL劫持原理

如果A.exe想要调用D.dll,并且使用里面的FunC函数,这样的话,我们把B.dll改名为BB.dll(有的不用,直接根据路径劫持),然后我们自己写一个B.dll里面有一个FunC这个函数,然后我们在这个函数里加载BB.dll,并且调用里面的FunC函数,之后我们再干一些自己的事,对于A.exe来说通常没什么异常,这样我们的劫持目的就达到了。

实验过程

首先编写正常的DLL导出函数及其调用测试代码
创建一个DLL项目,实验中将其命名为MyDLL,添加MyDLL.h,在里面声明导出函数
DLL劫持实验_第1张图片
在MyDLL.cpp里编写导出函数的实现
DLL劫持实验_第2张图片
将该项目编译,在MyDLL项目目录下的Debug文件夹中会生成MyDLL.dll
另新建一个Win32控制台空项目,将其命名为MyDLLtest,编写测试代码,即对导出函数调用测试
DLL劫持实验_第3张图片
将该测试项目编译生成Debug文件夹,将前面生成的MyDLL.dll文件复制到这个Debug文件夹中,运行MyDLLtest.cpp,结果如下,DLL调用成功
DLL劫持实验_第4张图片
再新建一个DLL项目,将其命名为HiJack,在HiJack.cpp中直接默认调用MyDLLDLL.dll(其实就是前面的MyDLL.dll,只是为防止重名,修改了文件名而已),该项目中接口的实现是我们直接载入MyDLLDLL.dll,如下
DLL劫持实验_第5张图片
将该项目编译,会生成HiJack.dll文件,同样将其复制到测试项目的Debug文件夹中,和之前的MyDLL.dll放在一起。
未改文件名时,由于先编写MyDLL故时间为19:04,后编写的HiJack,其时间为19:25(以时间为辨别特征)
DLL劫持实验_第6张图片
如图修改文件名后,将HiJack.dll改为MyDLL.dll,为防止重名将原本的MyDLL.dll任意修改为其他名称如MyDLLDLL.dll
DLL劫持实验_第7张图片
再运行MyDLLtest.cpp,劫持成功。
DLL劫持实验_第8张图片

你可能感兴趣的:(恶意代码分析)