首页
社区
课程
招聘
[旧帖] [原创]避免键盘被监视 0.00雪花
2011-8-13 20:26 2376

[旧帖] [原创]避免键盘被监视 0.00雪花

2011-8-13 20:26
2376
如果别人在你的电脑上安装了键盘钩子system-wide hook程序来监视你的键盘按键动作,我的程序怎么才能避开这程序的监视.

解决办法:
在我的程序中安装一个局部键盘钩子(thread-specified hook),键盘钩子函数中不调用CallNextHookEx;

原理:
1.钩子链可以被破坏.同一类型的钩子会形成一个链,假如先被调用的钩子没有调用CallNextHookEx的话,后面的钩子将得不到调用.
2.对于某个特定的线程,如果既安装了线程钩子又安装了系统钩子,则线程钩子先于系统钩子被调用.

实验:
键盘钩子(WH_KEYBOARD)
我写了个简单的对话框程序,部分代码如下:
1.先声明钩子HHOOK gHook = NULL;
2.键盘钩子函数:
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
MessageBox(AfxGetMainWnd()->GetSafeHwnd(), "Thread hook", "keyboard", MB_OK);
return 0;
//return CallNextHookEx(gHook, nCode, wParam, lParam);
}
3.安装钩子:
DWORD nThreadid = GetCurrentThreadId();
gHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, AfxGetApp()->m_hInstance, nThreadid);
if(gHook == NULL)
{
AfxMessageBox("Install Keyboard Hook Failed", MB_OK);
}
4.卸载钩子
BOOL ret = UnhookWindowsHookEx(gHook);

实验方法及结果如下:
先启动另一个程序,安装系统键盘钩子,再启动我的程序,安装局部键盘钩子,实验结果表明系统钩子对我的程序无效.

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞5
打赏
分享
最新回复 (1)
雪    币: 129
活跃值: (323)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xed 2011-8-14 14:40
2
0
那怎么能保证自己的钩子就被先调用
游客
登录 | 注册 方可回帖
返回