VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 344|回复: 0

远程线程注入,加键盘钩子没反应,求大佬指点

[复制链接]
38_avatar_middle
最佳答案
0 
在线会员 发表于 2022-4-2 13:51:32 | 显示全部楼层 |阅读模式
具体现象是远程线程注入调用SetHook成功,目标程序已经弹出了消息框,显示键盘钩子安装成功,但是按指定键没任何反应。
如果直接用SetWindowsHookEx注入就正常
DLL内部分代码如下:

void WINAPI SetHook()
{
        DWORD dwTid = GetMainThreadIdByPid(GetCurrentProcessId());
        HHOOK hHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, theApp.m_hInstance, dwTid);
        if (NULL == HHOOK )
        {
                ::MessageBox(NULL, _T("键盘钩子安装失败。"), _T("Tips"), MB_ICONINFORMATION);
        } else
                ::MessageBox(NULL, _T("键盘钩子安装成功。"), _T("Tips"), MB_ICONINFORMATION);
}


LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
        if ( VK_HOME == wParam && (lParam>>31&1) == 1 )
        {
                MessageBoxA(NULL, "Home键", NULL, NULL);
                return TRUE;
        } else {
                return CallNextHookEx( NULL, nCode, wParam, lParam );
        }
        return FALSE;
}

// 根据进程ID获取该进程主线程ID,失败返回0
DWORD GetMainThreadIdByPid(DWORD dwPid)
{
        THREADENTRY32 te32;
        te32.dwSize = sizeof(THREADENTRY32);
        HANDLE hSnapshot =CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
        if(Thread32First(hSnapshot, &te32))
        {
                do{
                        if(dwPid == te32.th32OwnerProcessID)
                        {
                                return te32.th32ThreadID;
                        }
                }while(Thread32Next(hSnapshot, &te32));
        }

        return NULL;
}




上一篇:tcpip通讯如何设置 发送 接收 数据超时 ,让程序执行下去,
下一篇:SDI重绘时如何布局
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-10 08:55

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表