2009-09-03 17 views
5

Estoy tratando de aplicar ingeniería inversa a un objeto compartido de modo de usuario que interactúa con un controlador de kernel a través de ioctl syscalls. Tengo un archivo de cabecera con definiciones para la interfaz ioctl del controlador del kernel (es decir, #defines para números de comando ioctl y definiciones de estructuras para los diversos datos enviados a ioctl).Agregando tipos de estructura personalizados a strace

Veo que strace tiene la capacidad de eliminar la referencia de los punteros de usuario que se pasan a las llamadas al sistema, pero obviamente no puede desviar las estructuras personalizadas que se pasan a ioctl. ¿Existe alguna manera fácil de agregar mis definiciones a strace para poder obtener datos significativos que pasen a ioctl, en lugar de solo una dirección de puntero?

Tengo la fuente para strace y la he compilado/instalado con éxito, pero todos mis intentos de incluir mi propio encabezado no han tenido ningún efecto.

Respuesta

2

La construcción strace no introspecciona automáticamente las estructuras y genera analizadores sintácticos para ellas; tendrás que escribir un código para manejar tus estructuras.

+0

Ya veo. Simplemente incluir la definición de mi estructura no es suficiente. Estoy marcando esto como la respuesta aceptada porque aborda la pregunta. Aunque la respuesta de Dave es otra buena manera de lograr mi objetivo. –

2

La forma más fácil de lograr esto puede ser escribir una intercatriz de biblioteca para ioctl(). Hay una buena guía para hacer esto en Linux here.

Puede verificar los números de comando personalizado que utiliza su aplicación; y volcar las estructuras para estos.

Cuestiones relacionadas