最近在研究DLL注入,感觉各种病毒的原理看了一大堆,但是到头来,连一个DLL项目都不会编写,遂,在网上收集资料,同学推介B站的视频也不错,有所小成,写下一点心得,以供各位看官参考,当然有不足之处,还请大家加以斧正。
下面切入正题:
1、先新建一个项目:
在这里我们选择,DLL文件,附加选项没有什么太大意义,直接完成就好
上边是我们的DLLmain.cpp里边生成的文件,和所有程序一样,每一个程序都有一个入口点,就像C程序的入口点是main函数一样,dllmain就是.DLL 程序的入口点。程序从这里开始执行。DLLmain的参数,上边也已经用注释的方法标记了出来。斜边,为了我们在调用DLL 的时候,提示我们调用成功,我们使用MessageBox来作为提示信息。
以上程序的作用就是在我们调用DLL的时候,显示弹框。
接下来 我们新建一个项目用来 用我们之前写好的DLL文件
调用 DLL要使用API所以我们还要包含一下Windows.h头文件
之后运行程序,会发现程序无法运行,报错信息显示,查找不到该文件,这个原因是因为,我们没有把刚才生成的DLL文件放到该文件的路径下,程序在调用DLL的时候,会现在自己的当前文件夹下寻找目标DLL,如果没有找到则会去System32下边去寻找(也要看生成的晨曦古是多少位的,32位和64位的寻找路径有所不同)。所以我们呢现在找到刚才的DLL文件,把它放到加载DLL文件的程序的当前文件夹下边:
之后重新运行程序,发现成功
之所以会弹出两次弹框是因为,程序在开始的时候调用DLL,在结束的时候释放DLL,这个过程中,DLL的状态会有所改变。
以上就是DLL文件的简单调用。但是,在一般情况下,系统或者说某个程序调用DLL文件的意图是实现某个固定的功能,就比如说最简单的加法、减法之类的。现在,我们就来实现一下:
新建一个拥有导出函数的DLL项目:
我们在Export DLL.cpp中实现加法的运算:
还有一点需要注意,就是在ExportDLL.h文件中注意如下修改:
在LoadDLL.cpp中作如下修改:
需要注意的是,不要忘记修改要引用的目标DLL文件
接下来再次运行:
成功调用
以上就是,整个DLL文件的编写以及调用的过程。
写在最后:
如果写的有什么错误的地方,希望大家帮忙指正,我也会及时修改,谢谢大家