首页
社区
课程
招聘
[分享]驱动模拟键鼠,支持64位,附代码。
发表于: 2015-2-1 15:55 69240

[分享]驱动模拟键鼠,支持64位,附代码。

2015-2-1 15:55
69240

经过修改两位论坛中网友的代码已经实现驱动模拟键鼠了,并支持64位。
这里感谢 孤山散人 和 asrn。我发的附件中有驱动和测试程序,64位驱动请自己重新编译,
测试程序请在有还原系统的情况下使用,不然会永久安装驱动。
测试程序只测试了键盘,因为DELPHI没有union这个类型,所以暂时没有测试鼠标。

2月4日更新附件,增加了调用的DLL文件,附代码。
驱动调用和卸载方法看DLL中注释掉的DllMain函数。

2月14日更新附件,鉴于有些童鞋不会编译驱动,所以特地上传一个32位和64位的win7
驱动(kmclassdrv.rar)。64位驱动要在 "禁止驱动签名强制" 下运行(开机按F8键),
上传一个DLL接口的delphi调用例子。为了方便只传了PAS文件(dlldemo.rar),
需要的可以参考一下。另外驱动只在WIN7下作了测试可用,WIN8未测试。

附件:myASSoft.rar(驱动代码和原作者的调用代码)
         kmclasstest.rar(delphi调用例子)
         kmclassdll.rar(DLL接口)
         kmclassdrv.rar(32位和64位已编译的驱动包)
         dlldemo.rar(delphi调用dll接口的例子)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 10
支持
分享
打赏 + 2.00雪花
打赏次数 1 雪花 + 2.00
 
赞赏  kanxue   +2.00 2019/02/02 感谢分享~
最新回复 (126)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢了啊指向爱
2015-2-1 17:24
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如果想要卸载驱动怎么办
2015-2-1 17:33
0
雪    币: 251
活跃值: (301)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
只有自己写个驱动服务卸载程序。
2015-2-1 17:38
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
潜力贴刘明。
2015-2-1 17:54
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
表示很nice的说!
2015-2-1 18:55
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark
2015-2-1 19:51
0
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
一大波XX即将来袭
2015-2-1 22:36
0
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mark  也许用到
2015-2-2 23:41
0
雪    币: 2670
活跃值: (2048)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
绝对的用得到,留个位置以后好来下
2015-2-3 19:46
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
牛啊 支持一下
2015-2-3 20:15
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
输出@这个符号,是要键值多少,64不对啊
2015-2-4 10:28
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
还有怎么会输出时候会弹出网页呢
2015-2-4 10:29
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
留名 占位置
应该用得到
2015-2-4 11:03
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
谢谢分享,mark了
2015-2-4 11:17
0
雪    币: 251
活跃值: (301)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
真是悲剧。刚试了下某游戏,效果不怎么好,而且退出游戏后重新启动模拟键鼠,就不能用了。
也就是说第一次有效。看看哪位大神还能修改一下

这个问题已解决,就是不能在驱动保护后启动模拟键鼠的驱动,不然会找不到键鼠模拟的函数地址。
2015-2-4 12:12
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
输出@这个符号,是要键值多少,64不对啊 ?????
2015-2-4 12:23
0
雪    币: 74
活跃值: (748)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
mark  也许用到
2015-2-4 12:31
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
输出@这个符号,是要键值多少,64不对啊 ?????
2015-2-4 12:39
0
雪    币: 251
活跃值: (301)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
这个不清楚。@这个符号要用到shift键了,我不清楚怎么弄。
2015-2-4 12:41
0
雪    币: 251
活跃值: (301)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
delphi 调用DLL接口的代码如下

var
  Form1: TForm1;
  myhandle:HANDLE;
  procedure SetHandle(myhandle:HANDLE);cdecl;external 'kmclassdll.dll';
  procedure myKeyDown( VirtualKey:USHORT);cdecl;external 'kmclassdll.dll' name 'KeyDown';
  procedure myKeyUp( VirtualKey:USHORT);cdecl;external 'kmclassdll.dll' name 'KeyUp';
  procedure MouseLeftButtonDown();cdecl;external 'kmclassdll.dll';
  procedure MouseLeftButtonUp();cdecl;external 'kmclassdll.dll';
  procedure MouseRightButtonDown();cdecl;external 'kmclassdll.dll';
  procedure MouseRightButtonUp();cdecl;external 'kmclassdll.dll';
  procedure MouseMiddleButtonDown();cdecl;external 'kmclassdll.dll';
  procedure MouseMiddleButtonUp();cdecl;external 'kmclassdll.dll';
  procedure MouseMoveRELATIVE( dx:LONG; dy:LONG);cdecl;external 'kmclassdll.dll';
  procedure MouseMoveABSOLUTE( dx:LONG; dy:LONG);cdecl;external 'kmclassdll.dll';
  function  LoadNTDriver(lpszDriverName:PChar;lpszDriverPath:PChar):integer;cdecl;external 'kmclassdll.dll';
  function  UnloadNTDriver( szSvrName:PChar ):integer;cdecl;external 'kmclassdll.dll';
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled:=false;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  LoadNTDriver('kmclass','kmclass.sys');
  myhandle:=CreateFile('\\.\kmclass',
                GENERIC_WRITE or GENERIC_READ,
                0,
                nil,
                OPEN_EXISTING,
                0,
                0);
  SetHandle(myhandle);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  CloseHandle(myhandle);
  UnloadNTDriver('kmclass');
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  hand:HANDLE;
begin
hand:=0;
SetHandle(hand);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
point:TPoint;
begin
//myKeyDown(88);
//Sleep(100);
//myKeyUp(88);
  if windows.GetAsyncKeyState(16)=-32767 then
   begin
    MouseMoveRELATIVE(50,0);

   end;
end;
2015-2-4 12:58
0
雪    币: 13
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
留名 占位置
应该用得到
2015-2-4 13:02
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
23
shift和2怎么同时按下,实现@的输出呢    指点
2015-2-4 13:55
0
雪    币: 251
活跃值: (301)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
24
myKeyDown(shift键值);
myKeyDown(2的键值);

Sleep(100);
myKeyUp(2的键值);
myKeyUp(shift键值);

这样试试看。
2015-2-4 13:59
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
你这个没有分按下和弹起,需要修改
2015-2-4 15:26
0
游客
登录 | 注册 方可回帖
返回
//