MFC dll注入框架



HOOK API或其它什么时,我们经常需要注入dll,而在WIN7系统,通过远程线程的方式

来注入dll,貌似不好用,而通过安装钩子的方式注入dll时,会把dll注入到很多个程序,

本文就是为了方便对指定的程序注入dll而写的。框架搭好后,以后注入dll就方便多了。

文章后面本例子VS2008源码下载地址。

-----------------------------------------------------------------------------------------------------------------------------------

本程序框架功能说明:

1.通过安装钩子来注入dll(例子程序用的是鼠标钩子,当然你可以改成其它类型的钩子)。

2.dll只注入指定的进程(通过PID来判断是否是要注入的进程)。

3.dll通过发送消息来与主程序进行通信。

-------------------------------------------------------------------------------------------------------------------------------------

程序界面如下(通过选择指定的进程来注入dll):


---------------------------------------------------------------------------------------------------------------------------------------------------

说下hook.dll文件功能:

1.导出两个函数

(1)BOOL WINAPI StartHook(HWND hWnd,DWORD dwPid) ;//用来安装钩子

参数hWnd是主程序的窗口句柄,dll发送消息给主程序时用到。

参数dwPid是被注入dll的进程的PID

(2)VOID WINAPI StopHook() ;//用来卸载钩子

//钩子过程,什么也不做,毕竟我们的目的是注入dll嘛。
LRESULT CALLBACK MouseProc(  
  int nCode,      // hook code  
  WPARAM wParam,  // message identifier  
  LPARAM lParam   // mouse coordinates  
  )  
 {  
return CallNextHookEx(hhkHook,nCode,wParam,lParam);  
 }  
以下是个人认为hook.dll最重要的一个函数,该函数实现了只注入指定程序的功能,

我们在dll的入口函数里面调用该函数,具体请看例子中的源码:


//检查是否是要HOOK的进程
BOOL CheckPid()
{
	if (g_bIsFirstLoad)
	{
		return TRUE;
	}
	DWORD pid=GetCurrentProcessId();
	if (pid==g_dwHookPid)
	{
		return TRUE;
	} 
	else
	{
		return FALSE;
	}
}


以上就是hook.dll的主要代码吗,因为只是个框架吗,所以现在什么功能都没有。

就下来说说主程序,主程序调用dll中安装钩子和卸载钩子的代码我已经写好了,

实际中我们只需要处理dll文件发来的消息即可,即我们只需要在以下这个函数编写代码:


//处理dll发来的消息
LRESULT CInjectHookDlg::OnHookDll(WPARAM wPara,LPARAM lParam)
{
	return 1;
}


以上就是该dll注入框架的主要功能了,不算复杂,以后想HOOK哪个API,在hook.cpp文件进行

主要的代码编写即可。需要注意的是,因为该例子使用的是鼠标钩子,所以在安装完钩子后,

我们需要把鼠标移动到目标程序的窗口,这样hook.dll文件才会注入到目标程序,原因不用说了吧。

如果你不喜欢这种方法,换另外一种钩子即可,在hook.dll中改下面这行代码就可以了:

hhkHook=::SetWindowsHookEx(WH_MOUSE,MouseProc,hInstDll,0);  

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
本例子VS2008工程下载:

MFC dll注入框架.zip   //VS2008+Win7+MFC 测试通过

http://download.csdn.net/detail/friendan/6357107

MFC DLL注入器是一种软件工具,用于将动态链接库(DLL)文件注入到运行的程序中。注入器的作用是将被选定的DLL文件加载到目标程序的内存空间,从而改变目标程序的行为或添加额外的功能。 MFC(Microsoft Foundation Classes)是一个扩展应用程序开发的库,它提供了许多用于创建Windows桌面应用程序的类和函数。MFC DLL注入器利用这些类和函数创建一个DLL文件,然后将其注入到目标程序中。 注入器的工作原理是通过操作目标程序的内存空间,将DLL文件加载到指定的地址,并修改目标程序在启动时的加载行为。通过这种方式,目标程序就可以使用DLL文件中所提供的函数和功能。 注入DLL的过程可以分为以下步骤: 1. 打开目标进程:选择要注入的目标程序,并获取其进程ID。 2. 创建注入器线程:创建一个线程,在目标进程中分配内存空间。 3. 加载DLL文件:将DLL文件加载到内存空间,并获取DLL文件的地址。 4. 注入DLL文件:通过修改目标进程内存中的代码段,将DLL文件路径注入到目标程序中。 5. 执行DLL:目标程序在运行时加载DLL文件,并调用其中的函数和功能。 MFC DLL注入器通常用于软件逆向工程、调试和途中,例如修改游戏的行为、添加插件或修复错误。然而,注入器的使用也可能存在潜在的安全风险,因此需要谨慎使用并遵守法律法规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值