架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15003|回复: 93
打印 上一主题 下一主题

[WinForm] .net/c# WinRing0驱动级模拟键盘输入[源码]

  [复制链接]
跳转到指定楼层
楼主
发表于 2017-8-1 15:27:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


WinRing0 这个是一个开源的项目,可以通杀 32 64位系统, 不需要为驱动安装数字签名

winring0 是一个完全免费开源的组件( BSD License ), 允许windows程序直接对I/O端口进行存取操作。
通过使用一种内核模式的设备驱动器和其它几种底层编程技巧,它绕过了Windows系统的保护机制。

winring0.ps2 扩展库支持PS2鼠标键盘硬件指令模拟。


有些时候,我们不知道加密算法,只能模拟键盘输入了,

以前做过银行登陆和支付密码加密的时候,用到的这个模拟键盘输入,普通的模拟键盘输入,无法在密码框里面输入的。。。

WinRing0 不支持 USB键盘的模拟,在笔记本电脑下模拟键盘输入正常

代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.InteropServices;
  5. using System.Text;

  6. namespace WinRing0Demo
  7. {
  8.         #region -   版   权   信   息  -
  9.         //======================================================
  10.         //
  11.         //      创 建 人:小渣渣
  12.         //      创建时间:2017/06/28 09:32:04
  13.         //      邮    箱:help@itsvse.com
  14.         //      个人网站:http://www.itsvse.com
  15.         //      功    能:
  16.         //      修改纪录:
  17.         //
  18.         //======================================================
  19.         #endregion

  20.         class WinRing
  21.         {

  22.                 public enum Key
  23.                 {
  24.                         ABSOLUTE = 0x8000,
  25.                         LEFTDOWN = 2,
  26.                         LEFTUP = 4,
  27.                         MIDDLEDOWN = 0x20,
  28.                         MIDDLEUP = 0x40,
  29.                         MOVE = 1,
  30.                         RIGHTDOWN = 8,
  31.                         RIGHTUP = 0x10,
  32.                         VIRTUALDESK = 0x4000,
  33.                         VK_A = 0x41,
  34.                         VK_ADD = 0x6b,
  35.                         VK_B = 0x42,
  36.                         VK_BACK = 8,
  37.                         VK_C = 0x43,
  38.                         VK_CANCEL = 3,
  39.                         VK_CAPITAL = 20,
  40.                         VK_CLEAR = 12,
  41.                         VK_CONTROL = 0x11,
  42.                         VK_D = 0x44,
  43.                         VK_DECIMAL = 110,
  44.                         VK_DELETE = 0x2e,
  45.                         VK_DIVIDE = 0x6f,
  46.                         VK_DOWN = 40,
  47.                         VK_E = 0x45,
  48.                         VK_END = 0x23,
  49.                         VK_ESCAPE = 0x1b,
  50.                         VK_EXECUTE = 0x2b,
  51.                         VK_F = 70,
  52.                         VK_F1 = 0x70,
  53.                         VK_F10 = 0x79,
  54.                         VK_F11 = 0x7a,
  55.                         VK_F12 = 0x7b,
  56.                         VK_F2 = 0x71,
  57.                         VK_F3 = 0x72,
  58.                         VK_F4 = 0x73,
  59.                         VK_F5 = 0x74,
  60.                         VK_F6 = 0x75,
  61.                         VK_F7 = 0x76,
  62.                         VK_F8 = 0x77,
  63.                         VK_F9 = 120,
  64.                         VK_G = 0x47,
  65.                         VK_H = 0x48,
  66.                         VK_HELP = 0x2f,
  67.                         VK_HOME = 0x24,
  68.                         VK_I = 0x49,
  69.                         VK_INSERT = 0x2d,
  70.                         VK_J = 0x4a,
  71.                         VK_K = 0x4b,
  72.                         VK_L = 0x4c,
  73.                         VK_LBUTTON = 1,
  74.                         VK_LEFT = 0x25,
  75.                         VK_M = 0x4d,
  76.                         VK_MBUTTON = 4,
  77.                         VK_MENU = 0x12,
  78.                         VK_N = 0x4e,
  79.                         VK_NEXT = 0x22,
  80.                         VK_NULTIPLY = 0x6a,
  81.                         VK_NUM0 = 0x30,
  82.                         VK_NUM1 = 0x31,
  83.                         VK_NUM2 = 50,
  84.                         VK_NUM3 = 0x33,
  85.                         VK_NUM4 = 0x34,
  86.                         VK_NUM5 = 0x35,
  87.                         VK_NUM6 = 0x36,
  88.                         VK_NUM7 = 0x37,
  89.                         VK_NUM8 = 0x38,
  90.                         VK_NUM9 = 0x39,
  91.                         VK_NUMLOCK = 0x90,
  92.                         VK_NUMPAD0 = 0x60,
  93.                         VK_NUMPAD1 = 0x61,
  94.                         VK_NUMPAD2 = 0x62,
  95.                         VK_NUMPAD3 = 0x63,
  96.                         VK_NUMPAD4 = 100,
  97.                         VK_NUMPAD5 = 0x65,
  98.                         VK_NUMPAD6 = 0x66,
  99.                         VK_NUMPAD7 = 0x67,
  100.                         VK_NUMPAD8 = 0x68,
  101.                         VK_NUMPAD9 = 0x69,
  102.                         VK_O = 0x4f,
  103.                         VK_P = 80,
  104.                         VK_PAUSE = 0x13,
  105.                         VK_PRINT = 0x2a,
  106.                         VK_PRIOR = 0x21,
  107.                         VK_Q = 0x51,
  108.                         VK_R = 0x52,
  109.                         VK_RBUTTON = 2,
  110.                         VK_RETURN = 13,
  111.                         VK_RIGHT = 0x27,
  112.                         VK_S = 0x53,
  113.                         VK_SCROLL = 0x91,
  114.                         VK_SELECT = 0x29,
  115.                         VK_SEPARATOR = 0x6c,
  116.                         VK_SHIFT = 0x10,
  117.                         VK_SNAPSHOT = 0x2c,
  118.                         VK_SPACE = 0x20,
  119.                         VK_SUBTRACT = 0x6d,
  120.                         VK_T = 0x54,
  121.                         VK_TAB = 9,
  122.                         VK_U = 0x55,
  123.                         VK_UP = 0x26,
  124.                         VK_V = 0x56,
  125.                         VK_W = 0x57,
  126.                         VK_X = 0x58,
  127.                         VK_Y = 0x59,
  128.                         VK_Z = 90,
  129.                         WHEEL = 0x800,
  130.                         XDOWN = 0x80,
  131.                         XUP = 0x100
  132.                 }



  133.                 static Ols ols = null;

  134.                 [DllImport("user32.dll")]
  135.                 public static extern int MapVirtualKey(uint Ucode, uint uMapType);

  136.                 public static Boolean init()
  137.                 {
  138.                         ols = new Ols();
  139.                         return ols.GetStatus() == (uint)Ols.Status.NO_ERROR;
  140.                 }

  141.                 private static void KBCWait4IBE()
  142.                 {
  143.                         byte dwVal = 0;
  144.                         do
  145.                         {
  146.                                 ols.ReadIoPortByteEx(0x64, ref dwVal);
  147.                         }
  148.                         while ((dwVal & 0x2) > 0);
  149.                 }
  150.                 public static void KeyDown(Char ch)
  151.                 {
  152.                         int btScancode = MapVirtualKey((uint)(Key)ch, 0);
  153.                         KBCWait4IBE();
  154.                         ols.WriteIoPortByte(0x64, 0xd2);
  155.                         KBCWait4IBE();
  156.                         ols.WriteIoPortByte(0x60, (byte)btScancode);
  157.                 }

  158.                 public static void KeyUp(Char ch)
  159.                 {
  160.                         int btScancode = MapVirtualKey((uint)(Key)ch, 0);
  161.                         KBCWait4IBE();
  162.                         ols.WriteIoPortByte(0x64, 0xd2);
  163.                         KBCWait4IBE();
  164.                         ols.WriteIoPortByte(0x60, (byte)(btScancode | 0x80));
  165.                 }
  166.         }
  167. }
复制代码


demo源码下载:
https://down.itsvse.com/item/8.html

游客,如果您要查看本帖隐藏内容请回复






上一篇:.net/c# 控制键盘按键(大小写按键等)
下一篇:nuget 国内源(镜像源)
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
推荐
发表于 2017-9-8 10:18:03 | 只看该作者

谢谢分享哦
- 本文出自架构师,原文地址:https://www.itsvse.com/thread-3924-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
推荐
发表于 2017-11-8 17:14:58 | 只看该作者
啊!非常感谢楼主的指教!也非常想下载来看看,,可是需要30MB啊,,我只有1MB啊。。这该怎么办。。。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
推荐
发表于 2018-9-21 10:08:14 | 只看该作者
好东西,就是不知道能拿上不,现在到处都收钱,共享的东西都被拿来收钱了
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
沙发
发表于 2017-8-24 14:14:22 | 只看该作者
正好有需要可以参考下
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
板凳
发表于 2017-9-2 16:54:56 | 只看该作者
多谢LZ分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
地板
发表于 2017-9-2 22:02:45 | 只看该作者
谢谢分享哦
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
5#
发表于 2017-9-3 21:39:56 | 只看该作者
不知道能不能用
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
6#
发表于 2017-9-3 23:11:55 | 只看该作者
谢谢分享,好东西
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
8#
发表于 2017-9-11 09:54:27 | 只看该作者
感謝您的分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
9#
发表于 2017-9-20 13:45:35 | 只看该作者
谢谢楼主的分享!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
10#
发表于 2017-9-20 18:47:05 | 只看该作者
kankan~~~~~~~~~~~~~~~~~~~~~~
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

关闭

站点通知上一条 /1 下一条

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2018-10-18 18:03

Powered by Discuz! X3.4

© 2001-2014 Comsenz Inc.

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