Windows编程之DLL注入

 

Windows编程中不得不懂的一项实用技巧

就是DLL动态库注入技术

关于这一系列的注入知识,后续会针对每一项技巧进行专门的博文编写
这篇博文,简单讲述现在常用的四种技巧

一、注册表注入

顾名思义,就是通过注册表的方式,把需要的执行的代码片段,注入到目标程序中,使目标程序执行指定的代码片段,从而达到预期效果。

二、函数转发注入

这个方式,是通过替换目标程序的动态库,可以定义dll入口等函数,而后转发原函数调用内容至原动态库函数接口,这样的动作之后,就可以调用注入的代码片段,从而达到预期效果。

三、挂钩注入

这项技术,要是有了解过钩子技术的人就会比较容易懂,主要通过挂钩相关程序下,或者全局下的相关消息,或者理解成捕获目标消息后,执行指定代码片段,从而达到预期效果。

四、远程注入

这里的远程,不要想得太复杂,不是我们平时所谓的网络中的远程,这里的意思是,通过控制内存,在内存段上为目标程序开辟一条线程,之后控制该线程执行相关的DLL。

以上四种方式就是常用的几种DLL注入技巧

都各自有利有弊
注册表注入的方式,最简单,但是这种方式依赖于user.dll这个系统自带dll,当可执行程序需要调用到这个动态库,才可形成注入,而且我试过win8,win10下好像支持效果不是太好;
函数转发的方式,最直观,但是现在大多数企业级的目标程序,是对DLL进行注册校验的,一旦出现非法dll则无法实现效果,所以需要采取该方式的dll开发商,需要经过认证;
挂钩的方式,弊端就在于依赖于windows的消息,无消息则无法注入;
远程注入的方式是个人相对推荐的,其实认真想想某些病毒就是通过这样的手段,使病毒程序执行于无形之中。

后续有空的话,我会详细编写各个方式的实现博文,写在这里,激励自己写下去的动力。

 

我的原博文链接:http://halfofpoetry.github.io/2020/05/07/Windows%E7%BC%96%E7%A8%8B%E4%B9%8BDLL%E6%B3%A8%E5%85%A5/

你可能感兴趣的:(系统,windows,c++)