Posted on 2010-07-02 15:18
S.l.e!ep.¢% 阅读(582)
评论(0) 编辑 收藏 引用 所属分类:
RootKit
1:当编辑框获得焦点时,定时随机发送键盘消息,当需要获取输入的真实密码时,发送WM_GETTEXT消息.由于随机发送的键盘消息是我们自己发送的,所以我们可以将其与用户输入的键盘消息分开.
2:在Windows下加载一个模块时使用的API是LoadLibrary函数,这个函数内部又会调用LoadLibraryEx函数,windows底层是UINCODE的,所以应该调用的是LoadLibraryExW。如果我们写的正常程序,如果调用了LoadLibrary那摩LoadLibraryExW函数的返回地址应该位于Kernel32.dll中,或者我们就是直接调用了LoadLibraryExW那摩返回地址应该位于我们的程序中。但是如果是被装了钩子后,当你按下一个健后,系统会下按键焦点程序的地址空间中加载黑客写的键盘记录模块,调用的是LoadLibraryExW,那摩这个函数的返回地址就不是以上的两种情况了,经我是实验是位于user32.dll中。根据这一点我们就可以判断一个模块是否为非法加载模块了.
具体的实现要用到APIHook技术。可以HOOKIAT也可以InLineHook.如果是InLineHokk,在自己写的HOOk函数中首先获取[ESP]的值,这个就是返回值了。随后,就拿这个返回值去比较就可以了。
3:Windows下的钩子逻辑上是一个链状的,一个系统中可以安装很多的钩子,这些钩子会形成一个钩子链,先装的钩子在最前头,前面的钩子通过调用CallNextHookEx函数将信息传给后面的钩子,如不不调用这个函数那摩链子就断了,后面的钩子永远互惠获取信息。我们不往下传递信息,我们自己处理,让下面的钩子瞪着眼着急去吧。
具体做法为:我们在我们的程序中装上局部钩子,在局部钩子的回调函数中我们截获按键消息,我们自己存起来,然后再给密码框发个假消息,比如按下了A健,我们用我们的局部钩子截获了A健消息,我们保存起来,然后我们给密码框发个假消息,就说我们接受到了个B健,然后不调用那个CallNextHookEx函数,而是直接返回1,这样下面的钩子函数就不调用了.