DLL注入技术

DLL注入方法:在进程创建阶段加载输入表中的DLL(静态输入);通过调用LoadLibrary(Ex)主动加载(动态加载);由于系统机制的要求们必须加载系统预设的一些基础服务模块。

1、静态修改PE输入表法

准备工作:dll,导出Msg()函数

修改对象:notepad.exe

修改目标:启动NOTEPAD.EXE时能够加载MsgDLL.DLL

MsgDLL.dll的主要功能是在Dllmain中弹出一个MessageBox展示自己的存在

备份原IID结构

粘贴到10400

 在原IID区域结构构造新IID的OriginalFirstThunk、Name和FirstThunk结构

DLLName RawOffset=0x6A14    RVA = 0x6a14 - 0x400 + 0x1000 = 0x7614

IMPORT_BY_NAME RawOffset = 0x6A20 RVA = 0X7620

手动修改数据

填充新输入表项的IID结构

 

 

修正PE文件头的信息

 进程创建期修改PE输入表法:原理与静态修改PE输入表法完全相同

(1)以挂起方式创建目标进程

(2)获取目标进程中的PE结构信息

(3)获取原IID大小,增加一项,搜索可用节空隙。

(4)构造新的IID及与其相关的OriginalFirstThunk、Name、FirstThunk结构

(5)修正PE映像头

(6)更新目标进程的内容

(7)继续运行主线程

 

改变程序运行流程使其主动加载目标DLL:

程序运行的容器是进程,整整活动的是其中的线程。改变程序流程的通常做法是改变线程EIP、创建新线程或者修改目标进程内的某些代码,使其执行LoadLibrary(Ex)来加载目标DLL

方法:1、CreateRemoteThread法;2、RtlCreateUserThread法;3、QueueUserApc/NtQueueAPCThread APC注入法等等

利用系统机制加载DLL:1、SETwindowHookEx消息钩子注入:消息钩子是Window提供的一种消息过滤和预处理机制,可以通过API SetWindowHookEx安装一个用于过滤特定类型消息的钩子函数。

HOOK
WINAPI
SetWindowsHookExW(
__in int idHook, //HookType
__in HOOKPROC lpfn, //HOOkProcedure 钩子程序
__in_opt HINSTANCE hmod, //
__in DWORD dwThreadId); //挂钩线程的ID

 最后一个参数指定了要Hook的线程ID。如果这个参数设置为0,那么安装的就是一个全局消息钩子,要求HOOKPROC必须在DLL中,并且要指定第三个参数hMod。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值