寻找驱动IOCTL|寻找驱动IOCTL code的想法(一)

首先明确IOCTL code的定义方法如下:

寻找驱动IOCTL|寻找驱动IOCTL code的想法(一)
文章图片
image.png

  1. 调试程序exe,对CreateFileW和DeviceIoControl下条件断点的方式抓取到至少一个IOCTL code,由于对于同一个设备来说,只有Function code和Transfer type会更改,所以在fuzz时可以大大缩小尝试的范围。
    对于这个方法目前存在的一个没有想到解决办法的难点:
    对于有的设备你并不知道要怎么对软件进行操作才能调用这个设备。所以有可能一直都抓不到对这个设备的操作,结果就是一个IOCTL code都拿不到。
    一些值得尝试的方法:
  1. 通过逆向sys文件,找到特定的dispathfunction中相关内容,理论上可以拿到所有有效IOCTL code值。
    对于这个方法的没有解决难点:
    拿不到符号表加之个人汇编水平实在有限,对于略复杂的sys文件,找到对应的内容有些难。
  2. 【寻找驱动IOCTL|寻找驱动IOCTL code的想法(一)】值得尝试的一个方法
    通过内核调试的方法:写一个使用设备的函数,并使用DeviceIOContrl函数随便传一个IOCTL code值,通过断点跟踪尝试定位到具体的sys文件中具体位置。考虑的不太细,具体的实施还需要再妥善考虑一下。

    推荐阅读