代码之家  ›  专栏  ›  技术社区  ›  Kyle Gagnet

向Strace添加自定义结构类型

  •  5
  • Kyle Gagnet  · 技术社区  · 15 年前

    我正试图对一个用户模式共享对象进行反向工程,该对象通过ioctl syscalls与内核驱动程序交互。我有一个头文件,其中包含内核驱动程序的ioctl接口的定义(即定义ioctl命令号,以及发送到ioctl的各种数据的结构定义)。

    我看到strace能够取消引用传递到系统调用中的用户指针,但它显然不能取消引用传递到ioctl中的自定义结构。有没有一种简单的方法可以将定义添加到strace中,以便将有意义的数据传递到ioctl,而不仅仅是指针地址?

    我有strace的源代码,并且已经成功地编译/安装了它,但是我所有包含自己头的尝试都没有效果。

    2 回复  |  直到 15 年前
        1
  •  2
  •   gone    15 年前

    Strace构建不会自动内省结构并为它们生成解析器——您必须编写一些代码来处理结构。

        2
  •  2
  •   DaveR    15 年前

    实现这一点的最简单方法可能是为 ioctl() . 在Linux上做这个有一个很好的指南 here .

    您可以检查应用程序使用的自定义命令号,并为这些命令转储结构。