grok 驱动级键盘按键记录器分析

       grok是一个驱动模块,其主要功能就行进行键盘按键及剪切板数据的记录,也就是一个键盘记录器。实现原理是通过对shadow-ssdt的相关函数进行hook,和r3对GetUserMessage进行hook的原理差不多。

关键部分如下:

查找csrss.exe进程是否已经启动,如果没有启动,则创建线程等待其启动。如果已经启动,就进入下一步准备进行hook操作。

        前面检查csrss.exe进程是因为后面解析shadow-ssdt数据需要gui进程环境,需要附加到csrss.exe进程,然后才方便解析shadow-ssdt。之后,根据自定义的序号获取函数地址,其内部实现如下:

      系统版本相关的shadow-ssdt函数序号,根据系统版本赋值,解析过程就不展开。

保存hook后的逻辑处理函数地址,一个是消息截取,一个是剪切板截取。

  实际执行hook操作的函数,大致是inlinehook的流程。确认需要hook函数的地址,然后保存函数体前几个被覆盖的字节码,填入劫持的跳转shllcode地址。

关闭内存写保护,然后进行内存修改,安装跳转函数

                         劫持NtUserPeekMessage函数的shellcode

按键类型的消息过滤

                           剪切板的数据获取通过NtCreateLocalMemHandle。

获取一些辅助信息,使得按键数据更立体完善

  最后,这是个古早的样本了。shadow-ssdt hook 在较新的win10/win11上是无法进行的,因为pg对shadow-ssdt 数据进行了保护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值