基于HOOK技术和MMF的Windows密码渗透技术研究(4)

2025-04-29

9.2钩子过程LRESULT WINAPI GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam),该过程主要完成从内存映像文件中读出保存的钩子句柄。

        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);//返回下一钩子过程

10  演示界面

    如图3所示:实例是MFC下基于对话框的工程。在window XP下,拖动图片控件放大镜来检索密码控件中的密码。下面的文本框显示一些相关的窗口信息以及密码文本。

11  反密码渗透应对策略

    通过以上介绍的原理、方法及实现我们了解了如何得到windows系列密码的方法,一个逻辑的问题是如何防止别人利用这样的间谍程序复制我们的密码?例如我们上网时如果被这样的钩子程序入侵,怎么才能保护密码的安全。首选的解决方法是欺骗间谍程序,在用户程序中不要显示真实的密码,最好是在密码控件中显示一条虚假的密码。这样如果有人用以上的程序来获取密码,那他得到的是虚假的密码而不是真实密码。     当然还有其它的应对策略,一种可行的方法是拦截WM_GETTEXT。但用虚假密码还有其它的好处,通过利用虚假密码代替真密码,那么看到的密码控件上***长度就不能判断密码到底有多长。如果一个程序在其密码控件中显示了“***”的文本,我们立即知道密码只有三个字符的长度,密码的安全性大大降低。但如果通过一些加密算法将密码控件的显示变为一长串的“*”,这种方法常见于微软的密码保护策略。那么密码攻击者将无从下手。

基于HOOK技术和MMF的Windows密码渗透技术研究(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:刍议计算机硬件维护的全面性

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219