【问题标题】:Can IOCTL be used in sending custom input to a DriverIOCTL 可以用于向驱动程序发送自定义输入吗
【发布时间】:2018-07-14 02:12:52
【问题描述】:

对不起,如果这是一个菜鸟问题,但我正在为游戏开发软件“插件”。我通过驱动程序这样做只是因为反作弊不支持环 0 检测。我还没有看到太多关于如何使用 IOCTL 的信息,我想知道您是否可以发送自定义输入,例如进程 ID 和其他可能会更改的信息,或者它们是否像开关功能或其他东西一样一成不变。再次为菜鸟问题感到抱歉。

【问题讨论】:

  • 抱歉语法很糟糕,凌晨 4 点,我整晚都没有睡
  • 没有规则,IOCTL 让你为所欲为。
  • 这就是ioctl 的全部意义所在。它是一个简单的通用接口,可让您在标准 I/O 操作不适合时添加所需的任何驱动程序特定操作。

标签: c driver ioctl


【解决方案1】:

您可以使用DeviceIoControl Win32 API 例程通过 IOCTL 与内核模式设备驱动程序进行通信。该例程在内部调用NtDeviceIoControlFile (NTDLL),后者执行系统调用以执行NtDeviceIoControlFile (NTOSKRNL)

DeviceIoControl 例程记录在 MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/aa363216(v=vs.85).aspx

内核模式设备驱动程序需要满足一个先决条件:https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/named-device-objects

我没有看到太多关于如何使用 IOCTL 的信息,我想知道您是否可以发送自定义输入,如进程 ID 和其他信息

答案是肯定的,您可以通过 IOCTL 发送自定义缓冲区。您还可以从内核模式设备驱动程序接收输出缓冲区返回到启动 IOCTL 操作的用户模式应用程序 - 这当然是可选的。

如果您需要同时发送多条信息,请考虑使用结构。

我还建议您阅读以下内容: https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/methods-for-accessing-data-buffers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2010-11-03
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多