我正在尝试对通过ioctl系统调用与内核驱动程序交互的用户模式共享对象进行逆向工程。我有一个头文件,其中包含内核驱动程序的ioctl接口的定义(即ioctl命令编号的#defines,以及发送到ioctl的各种数据的结构定义)。
我看到strace能够取消引用传递给系统调用的用户指针,但显然无法取消引用传递给ioctl的自定义结构。有没有一种简单的方法可以将我的定义添加到strace中,这样我就可以将有意义的数据传递给ioctl,而不仅仅是指针地址?
我有strace的源代码并已成功编译/安装它,但我尝试包含我自己的标题都没有效果。
答案 0 :(得分:2)
实现这一目标的最简单方法可能是为ioctl()
编写一个库插入器。在Linux here上有一个很好的指南。
您可以检查应用程序使用的自定义命令编号;并为这些结构倾倒。
答案 1 :(得分:2)
strace构建不会自动内省结构并为它们生成解析器 - 您必须编写一些代码来处理结构。