QQ密码保护与反保护浅谈
Leen
记得刚学vc的时候,了解了一点hook,就感觉无所不能,这偷个扣扣的小密码不是轻而易举
结果发现是异想天开。。
先说说一种常用的预防键盘钩子钩去密码的方法,用钩防钩。
WH_DEBUG钩子优先级较高,可以先于键盘钩子加载,网上这方面资料很多。
这样,我们就可以在密码框获取焦点时挂钩,失去焦点时脱钩,这样来防止键盘钩子,而且使用线程钩子即可,不必使用全局钩子。
BOOL InstallThreadHook(DWORD ThreadID) //安装钩子
{
DEBUG_hhook=::SetWindowsHookEx(WH_DEBUG,(HOOKPROC)DebugProc,AfxGetApp()->m_hInstance, ThreadID);
if(DEBUG_hhook==NULL)
return FALSE;
return TRUE;
}
BOOL UnInstallThreadHook( ) //卸载钩子
{
BOOL bret = ::UnhookWindowsHookEx(DEBUG_hhook);
if(bret)
{
DEBUG_hhook = NULL;
}
return bret;
}
//本线程钩子
LRESULT CALLBACK DebugProc(int nCode, WPARAM wParam, LPARAM lParam)
{
DEBUGHOOKINFO *debug=(DEBUGHOOKINFO *)lParam;
if(wParam == WH_KEYBOARD)
{
return 1;
}
return ::CallNextHookEx(DEBUG_hhook, nCode, wParam ,lParam);
}
void CTestHookDlg::OnSetfocusEdit1()
{
// TODO: Add your control notification handler code here
InstallThreadHook(GetCurrentThreadId());
}
void CTestHookDlg::OnKillfocusEdit1()
{
// TODO: Add your control notification handler code here
UnInstallThreadHook();
}
扣扣的密码保护采取了很多机制,以上只是网上流传扣扣使用的众多保护技术中的一小种而已。。
如今扣扣又使用DirectUi,所有控件都是DC画得,木有句柄,查句柄这条路也被断了。。
看来偷取扣扣密码比较难,要去破解他众多的保护技术,是场攻坚战。。
记得网上提到过一种叫做粘虫的病毒,弄个密码框,覆盖在扣扣上,不失为一种十分轻巧的办法,绕过了这场攻坚战。
于是一时兴起,粗糙仿制一个先。
效果图如下:
框
没做太多工作,只做了本机1440*900分辨率的考虑,以及扣扣窗口居中的情况,作为一种娱乐而已。
仔细对比能看出 光标以及圆点都要要比扣扣密码框的小,因为是使用的MFC的CEdit控件。
以下是代码
转载请标明出处:http://blog.csdn.net/linlin003/article/details/8778506