进程注入之DLL注入

前言

DLL注入是我在大一的时候接触的一种技术,那时候还不懂,最近结合小程序详细的理解了一下。

DLL注入是将代码注入到一个远程进程中,并让远程进程调用LoadLibrary()函数,从而强制远程进程加载一个DLL程序到进程中。而当DLL被加载时就会运行DLL中的DllMain()函数,所以就会为恶意代码的执行提供机会,而因为DLL本身是由感染后的进程加载的同时PE文件也并没有对系统进行过多的敏感操作,所以这种技术具有相当强的一种隐蔽性。

图解


程序分析

这里的程序是由一个PE文件和一个DLL文件构成,毫无疑问,DLL文件是需要注入的,里面也会有相应的恶意代码,执行一下之后,启动explorer.exe就会出现异常,每分钟都会出现弹窗。

首先我们来分析一下主要的PE文件。进入main()函数是这样的


首先加载了psapi.dll并且导入了三个函数,EnumProcessModules(),EnumProcesses(),GetModuleBaseNameA()。

然后获取DLL的路径,调用EnumProcesses()获取内存中所有进程的PID,形成一个数组,让数组中的每一个进程的pid成为参数传入sub_401000()。

所以我们进入sub_401000(),这个函数长这样


应该是对pid相应的进程名与explorer.exe进行比对,如果相同就返回1,进入后面的操作

获取explorer.exe的句柄,使用VirtualAllocEx()函数动态的在explorer.exe中分配一块内存,成功之后指向那块内存的指针会保存在lpParameter中,与进程句柄一起作为参数传入WriteProcessMemory(),写入的数据就是DLL的路径。

然后Kernel32.dll中的LoadLibraryA()函数加载DLL也会被CreateRemoteThread()函数强行调用,从而执行DLL注入。

而我们看到DLL中就会有弹窗的相关代码。




DLL注入技术是比较经典的技术,我本身也觉得比较厉害,所以还是值得一学

程序与内容源自《恶意代码分析实战》一书12-1

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值