首页
社区
课程
招聘
[原创]发现有人问dll怎么show窗口,这里解答一下, 大神请忽略.
发表于: 2017-6-4 21:10 3046

[原创]发现有人问dll怎么show窗口,这里解答一下, 大神请忽略.

2017-6-4 21:10
3046

是想要下边这效果吧, 注入的微信进程, show出一个窗口 然后再拦截api搞点事情.

说一下思路: 其实这种dllshow窗口和普通的一样, 只是需要在一个单独的线程里去show, 然后又因为创建的子线程非mfc线程(主线程),所以需要在这个子线程里show完窗口之后加一个消息循环就ok了,什么问题没有了.


DLL主要代码:

BOOL CInjectorApp::InitInstance()//这个dll在被注入到目标进程后会被调用,然后你懂得

{

CWinApp::InitInstance();

::CreateThread(NULL, 0, ShowInjectDialog, NULL, 0, NULL);//创建show窗口的线程.

return TRUE;

}


DWORD WINAPI ShowInjectDialog(void* p)//线程函数,在这里显示窗口并给show出来的这一个窗口加上消息循环

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

CHookDialog* m_pHookdlg = new CHookDialog();

m_pHookdlg->Create(IDD_DIALOG_HOOK);

m_pHookdlg->ShowWindow(SW_SHOWNORMAL);

//非主线程创建的窗口的消息循环要在创建窗口的线程中(当初我也是卡在这里,后来在MSDN找到这段话,现在给你抄录下来)

//MSDN : It is important to note that the message loop and window procedure for the window must be in the thread that created the window. 

MSG msg;

while (GetMessage(&msg, m_pHookdlg->m_hWnd, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return 0;

}



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
然而这并不是什么好习惯
2017-6-4 23:34
0
雪    币: 1795
活跃值: (63)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
当然没问题,不过用处不大,一般需要做到注入的都不是什么能见的人的东西
2017-6-4 23:54
0
游客
登录 | 注册 方可回帖
返回
//