(下面的文字本是我在某个论坛的回贴,后来发现跑题了,食之无味弃之可惜,于是转贴到这里)
除了nProtect,国外还有一些反键盘记录工具,比如下面这个还不错:
http://www.anti-keyloggers.com/
是个通用型的,与QQ的nProtect专门用于保护密码不同。
而且反破解做的不错(对我这种破解外行而言,呵呵)。
它的原理我简单的说一下,就是替换键盘类驱动的KeyboardClassServiceCallback,然后把得到的ScanCode传递到用户态,由位于Winlogon.exe的一个线程负责调用NtUserSendInput,将按键消息发给当前焦点窗口。
应该说这款反键盘工具的设计思想是很先进的:
1,选用KeyboardClassServiceCallback的好处是,比键盘过滤驱动更底层,对PS/2或USB键盘通用。
2,用Winlogon转发消息的好处是,自动适应多用户(session)的情况。
3,用NtUserSendInput的好处是,不会被Windows消息钩子挂钩。
4,虽然它没有构建起完全独立的键盘输入通道(这么做太复杂,兼容性不好),但对于没有重建的部分,通过检测钩子的方式弥补。
它的钩子检测功能对于用户态不错,遗憾的是,居然漏掉了中断服务挂钩的检测,实在是个大疏忽。另外,作为通用型保护机制,不可避免的具有一些局限性,比如无法防御用窗口子类化来做键盘记录。
还有一款产品:
http://www.anti-keylogger.net/
以后有空再看看,呵呵。