相关视频下载地址密码:huez
远程注入动态库,指的是在另外一个进程(远程进程)中创建导入动态库的线程(远程线程)。要完成的功能都在被导入的动态库中实现。
使用远程注入动态库技术,动态库文件不但可以运行,而且还具有良好的隐蔽性。动态库程序被注入到远程进程的地址空间中,它能够共享远程进程的资源,并且根据远程进程在操作系统中的级别访问响应的系统资源。另外,动态库程序没有独立的进程地址空间,从而避免了在操作系统中留下“蛛丝马迹”,达到了隐蔽自身的目的。
图1 远程注入动态库基本原理
1 程序演示
在该程序中,需要选择要注入的远程进程,并且需要输入要注入的动态库名称。在注入的动态库中,实现弹出对话框的功能。当将动态库成功的注入到远程进程之后,动态库就会弹出对话框。为了实现多次注入,程序还必须实现为远程进程释放动态库的功能。如图1-1、1-2和1-3所示。
图1-1 选择要注入的远程进程
图1-2 动态库注入远程进程成功
图1-3 动态库释放成功
2 动态库程序的实现
创建一个“MFC扩展动态库”(MFC扩展动态库见“VS2015动态库编程之MFC扩展动态库”),在动态库项目的“dllmain.cpp”源文件的DllMain()函数中,加入如下代码
if (dwReason ==DLL_PROCESS_ATTACH)
{
........
AfxMessageBox(_T("我是MFC_Extent_DLL_TestDLL.dll中的对话框"));
}
以上代码的功能是,在动态库文件被导入时,会弹出对话框显示“我是MFC_Extent_DLL_TestDLL.dll中的对话框”。使用该对话框来模拟动态库要实现的功能,如果将动态库注入到远程线程成功,就会弹出该对话框。
3 注入程序的实现
从“1 程序演示”中可以看到,注入程序主要分为三个主要功能:显示当前进程、远程注入动态库和远程释放动态库。
3.1 注入程序界面设计
在VS2015中创建一个基于对话框的程序。该程序的界面结构如图3-1所示。
图3-1 注入程序界面设计