钩子DLL注入

来源:互联网 发布:淘宝汽车装饰安装联盟 编辑:程序博客网 时间:2024/05/01 06:24
//1.新建mfc工程dll//2.给工程添加窗体资源IDD_DIALOG1//3.给窗体添加基于Cdialog的一个类CZRDlg//4.给ZRDlg.h加上#include "resource.h"头文件,否则类中添加了资源编译会不通过//5.在工程的def文件中导出StartHookCZRDlg *dlg=NULL;LRESULT CALLBACK HookPro(int nCode,WPARAM wParam, LPARAM lParam)//回调函数{AFX_MANAGE_STATE(AfxGetStaticModuleState());PMSG pMsg = (PMSG)lParam;if(pMsg->message == WM_KEYUP){if(pMsg->wParam == VK_HOME){if(dlg == NULL)  //第一次为空{dlg = new CZRDlg(); dlg->Create(IDD_DIALOG1);//创建dlg->ShowWindow(TRUE);//显示}else{if(dlg->IsWindowVisible()) //如果为显示dlg->ShowWindow(FALSE);//则隐藏elsedlg->ShowWindow(TRUE);//否则显示}}}return CallNextHookEx(0,nCode,wParam,lParam);}BOOL StartHook(char Name[]){  AFX_MANAGE_STATE(AfxGetStaticModuleState());//dll中调用资源必须加这一句  HWND i=FindWindow(NULL,Name);  if (i==NULL)  {  AfxMessageBox("未找到注入程序");  return false;  }  DWORD Pid=GetWindowThreadProcessId(i,NULL);  SetWindowsHookEx(WH_GETMESSAGE,HookPro,GetModuleHandle("test.dll"),Pid);}int CTestApp::ExitInstance() //推出时销毁窗体对象,否则会出错。{if (dlg!=NULL){delete dlg; //删除堆空间dlg = NULL;}return CWinApp::ExitInstance();}

0 0
原创粉丝点击