首页
论坛
课程
招聘
[求助]关于MFC DLL使用hook注入其他进程,这段代码是在MFC DLL中的,用启动程序调用之后,目标进程会自动退出,是什么原因呢
2021-7-1 00:04 2398

[求助]关于MFC DLL使用hook注入其他进程,这段代码是在MFC DLL中的,用启动程序调用之后,目标进程会自动退出,是什么原因呢

2021-7-1 00:04
2398

//线程回调
DWORD WINAPI MyFun(LPVOID lpParam)
{
pMainDLLWnd = new CMainDLLWnd;
pMainDLLWnd->DoModal(); //显示窗口
delete pMainDLLWnd;
return 0;
}

 

// CnotepadhookApp 初始化

 

BOOL CnotepadhookApp::InitInstance()
{
CWinApp::InitInstance();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//创建钩子
handled = FALSE;
notepadhandle = FindWindow(L"Notepad", NULL);
if (notepadhandle == NULL)
{
    printf("未查找到窗口.\n");
    return TRUE;
}
 
hooker = SetWindowsHookEx(WH_GETMESSAGE, HookProc, (HINSTANCE)AfxGetResourceHandle(), GetWindowThreadProcessId(notepadhandle, NULL));
if (hooker) {
    printf("Hook Successfully.\nHookID:%d\n", hooker);
}
else {
 
    printf("Hook Failed.\nError:%d\n", GetLastError());
    return TRUE;
}
PostMessage(notepadhandle, WM_DESTROY, 0, 0);
 
 
return TRUE;

}

 

//钩子函数
extern "C" __declspec(dllexport) LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
return CallNextHookEx(hooker, nCode, wParam, lParam);
tagMSG msg;
msg = (tagMSG
)lParam;
if (nCode == HC_ACTION && (msg->message == WM_DESTROY))
{
if (handled == FALSE)
{
handled = TRUE;
::CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)MyFun, NULL, NULL, NULL);
//MessageBoxW(NULL, L"This is a messagebox from notepad.exe", L"hook", MB_OK);

1
2
3
4
5
6
7
8
9
10
    }
    UnhookWindowsHookEx(hooker);
    if (msg->message == WM_DESTROY)
    {
        msg->message = WM_NULL;
    }
 
    return CallNextHookEx(hooker, nCode, wParam, (LPARAM)msg);
}
return CallNextHookEx(hooker, nCode, wParam, lParam);

## # }


2021 KCTF 秋季赛 防守篇-征题倒计时(11月14日截止)!

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 3004
活跃值: 活跃值 (705)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qj111111 活跃值 2021-7-1 06:29
2
0
你看看你的notepade是不是64bit
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
东阳起 活跃值 2021-7-1 09:23
3
0
就是位的问题,谢谢了
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
东阳起 活跃值 2021-7-1 09:23
4
0
qj111111 你看看你的notepade是不是64bit
就是位的问题,谢谢了
游客
登录 | 注册 方可回帖
返回