我正试图对一个用户模式共享对象进行反向工程,该对象通过ioctl syscalls与内核驱动程序交互。我有一个头文件,其中包含内核驱动程序的ioctl接口的定义(即定义ioctl命令号,以及发送到ioctl的各种数据的结构定义)。
我看到strace能够取消引用传递到系统调用中的用户指针,但它显然不能取消引用传递到ioctl中的自定义结构。有没有一种简单的方法可以将定义添加到strace中,以便将有意义的数据传递到ioctl,而不仅仅是指针地址?
我有strace的源代码,并且已经成功地编译/安装了它,但是我所有包含自己头的尝试都没有效果。
Strace构建不会自动内省结构并为它们生成解析器——您必须编写一些代码来处理结构。
实现这一点的最简单方法可能是为 ioctl() . 在Linux上做这个有一个很好的指南 here .
ioctl()
您可以检查应用程序使用的自定义命令号,并为这些命令转储结构。