关于HOOK KEYBOARD的问题!!

tjandy 2005-09-27 04:45:45
最近在玩网游,游戏里有个哥们的号被木马盗了,损失惨重呀!这几日上网找了一些木马相关资料,发现大部分都是通过HOOK来钩住键盘消息的,所以很想知道怎么处理才可以让程序的消息不会被HOOK了呢!就像QQ的那个密码框,在里面输入时,用SPY++是捕获不到消息的,请问,有人知道那个是怎么处理的吗?
...全文
323 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
djfu 2005-10-09
  • 打赏
  • 举报
回复
1、从CEdit继承一个子类CPasswordEdit,声明全局变量g_bAuthorIdentity表明消息发送者的身份。
BOOL g_bAuthorIdentity;
然后相应CPasswordEdit的虚拟函数DefWindowProc,在这个回调函数中进行身份验证:
LRESULT CPasswordEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// 对Edit的内容获取必须通过以下两个消息之一:
if((message == WM_GETTEXT) || (message == EM_GETLINE))
{
// 检查是否为合法
if(!g_bAuthorIdentify)
{
// 非法获取,显示信息
AfxMessageBox("小丫的,我的密码,你看不见的!");
return 0;
}
// 合法获取
g_bAutorIdentity = FALSE;
}
return CEdit::DefWindowProc(message, wParam, lParam);
}

(2) 在数据输入对话框中做处理
在对话框中声明一个CPasswordEdit类型的类成员m_edtPassword,并且在InitDialog()函数中用SubClassDlgItem()函数子类化m_edtPassword,这样类CPasswordEdit就能够接收对话框消息了
m_edtPasswod.SubClassDlgItem(IDC_EDIT_PASSWORD, this);

void CPrvEditPwdDlg::DoDataExchange(CDatatExchange *pDX)
{
// 如果获取数据
//注意:对于CPropertyPage类这里不需要if(pDX->m_bSaveAndValidate)条件
if(pDX->m_bSaveAndValidate)
g_bAuthorIdentity = TRUE;
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgInput)
//}}AFX_DATA_MAP
}
djfu 2005-09-29
  • 打赏
  • 举报
回复
屏蔽钩子的方法之一是检查消息的来源,内部增加一个校验机制,如果消息来自本应用程序,则予以响应,否则丢弃。
tjandy 2005-09-29
  • 打赏
  • 举报
回复
to long_xing(龙*星)
我试过了,如果屏蔽消息,还是可能获得到句柄的,可是QQ就可以获不到

我还有个猜想,那个地方是不是就是张帖图呀,有没有人做过类似的,帮忙解释一下呀
tjandy 2005-09-29
  • 打赏
  • 举报
回复
to djfu(一马平川)
你说的校验机制,能具体说一下吗
royosun 2005-09-28
  • 打赏
  • 举报
回复
安装adaware~~~
kugou123 2005-09-28
  • 打赏
  • 举报
回复
你挂接SetWindowsHookEx等函数,这样来防止你的程序被HOOK。
猜想而已,我没试过。呵呵。
long_xing 2005-09-28
  • 打赏
  • 举报
回复
据说QQ的那个密码框是经过重载的,过滤了一些消息。
tjandy 2005-09-28
  • 打赏
  • 举报
回复
to phoenix96_2000(eXMe)
谢谢,我一会把那个函数试一下
tjandy 2005-09-28
  • 打赏
  • 举报
回复
to phoenix96_2000(eXMe)
那个我没用过,不过你可试一下,QQ现在密码框输入时,用SPY++就不会有任何消息,我很想知道那个是怎么做的


windyloft(大后天)
我就是想讨论一下技术,现在的杀毒软件也不一定能把木马全杀掉,我那哥们就是装了金山时被盗的
phoenix96_2000 2005-09-28
  • 打赏
  • 举报
回复
to tjandy(ANDY):
用LowLevelKeyboard Hook还是可以取得到的,我试过的

当然网吧的机子大部分都是98的吧
windyloft 2005-09-28
  • 打赏
  • 举报
回复
安装杀毒软件
tjandy 2005-09-27
  • 打赏
  • 举报
回复
哪位还知道有别的处理方式吗?
tjandy 2005-09-27
  • 打赏
  • 举报
回复
翻了翻MSDN发现,上面说HOOK的是按照倒序来加载的,也就是说最后一下HOOK的,可以先处理消息,QQ是不是就是自己HOOK了几个HOOK要用到的API函数呀?求证明
tjandy 2005-09-27
  • 打赏
  • 举报
回复
to phoenix96_2000(eXMe)
我查了下资料,现在盗QQ的密码都是采用注入线程,然后向EDIT发更新wm_gettext消息来取得密码的,直接用HOOK来做是取不到消息的。

fairyprince 2005-09-27
  • 打赏
  • 举报
回复
没办法根治,因为很多程序要用到 HOOK
下补丁,防火墙!可以增强你计算机的安全性
DentistryDoctor 2005-09-27
  • 打赏
  • 举报
回复
全局钩子一般会在目标进程中注入其DLL。如果你的进程的模块列表中有一些不能确认的DLL,很可能就是钩子一类的了。
phoenix96_2000 2005-09-27
  • 打赏
  • 举报
回复
qq那个密码框还是躲不过键盘钩子
legendhui 2005-09-27
  • 打赏
  • 举报
回复
好像很难,键盘HOOK可以从消息队列中得到键盘的输入信息

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧