python dll注入监听_HOOK -- DLL的远程注入技术详解(1)

DLL

的远程注入技术是目前

Win32

病毒广泛使用的一种技术。使用这种技术的病毒体通常

位于一个

DLL

中,在系统启动的时候,一个

EXE

程序会将这个

DLL

加载至某些系统进程

(如

Explorer.exe

)中运行。

这样一来,普通的进程管理器就很难发现这种病毒了,而且

即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个

DLL

就不会在内

存中卸载,用户也就无法在资源管理器中删除这个

DLL

文件,真可谓一箭双雕哉。

记得

2003

QQ

尾巴病毒肆虐的时候,

就已经有些尾巴病毒的变种在使用这种技术了。

到了

2004

年初,我曾经尝试着仿真了一个

QQ

尾巴病毒,但独是跳过了

DLL

的远程加载

技术。

直到最近在学校论坛上看到了几位朋友在探讨这一技术,

便忍不住将这一尘封已久的

技术从我的记忆中拣了出来,以满足广大的技术爱好者们。

必备知识

在阅读本文之前,你需要了解以下几个

API

函数:

·

OpenProcess

-

用于打开要寄生的目标进程。

·

VirtualAllocEx/VirtualFreeEx

-

用于在目标进程中分配

/

释放内存空间。

·

WriteProcessMemory

-

用于在目标进程中写入要加载的

DLL

名称。

·

CreateRemoteThread

-

远程加载

DLL

的核心内容,

用于控制目标进程调用

API

函数。

·

LoadLibrary

-

目标进程通过调用此函数来加载病毒

DLL

在此我只给出了简要的函数说明,关于函数的详细功能和介绍请参阅

MSDN

示例程序

我将在以下的篇幅中用一个简单的示例

Virus.exe

来实现这一技术。这个示例的界面如

下图:

首先运行

Target.exe

,这个文件是一个用

Win32

Application

向导生成的

“Hello,

Worl

d”

程序,用来作为寄生的目标进程。

然后在界面的编辑控件中输入进程的名称

“Target.exe”

单击

注入

DLL”

按钮,

这时候

V

irus.exe

就会将当前目录下的

DLL.dll

注入至

Target.exe

进程中。

在注入

DLL.dll

之后,你也可以单击

卸载

DLL”

来将已经注入的

DLL

卸载。

模拟的病毒体

DLL.dll

这是一个简单的

Win32

DLL

程序,它仅由一个入口函数

DllMain

组成:

BOOL

WINAPI

DllMain(

HINSTANCE

hinstDLL,

DWORD

fdwReason,

LPVOID

lpvRe

served

)

{switch

(

fdwReason

)

{

case

DLL_PROCESS_ATTACH:

{

MessageBox(

NULL,

_T("DLL

已进入目标进程。

"),

_T("

信息

"),

MB_ICONINFOR

MATION

);

}

break;

case

DLL_PROCESS_DETACH:

{

MessageBox(

NULL,

_T("DLL

已从目标进程卸载。

"),

_T("

信息

"),

MB_ICONINFO

RMATION

);

}

break;

}

return

TRUE;

}

如你所见,这里我在

DLL

被加载和卸载的时候调用了

MessageBox

,这是用来显示我

的远程注入

/

卸载工作是否成功完成。而对于一个真正的病毒体来说,它往往就是处理

DLL

_PR

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值