Añadiendo tipos struct personalizada para Strace
-
21-09-2019 - |
Pregunta
Estoy tratando de realizar ingeniería inversa de un objeto compartido en modo de usuario que interactúa con un controlador del núcleo a través de llamadas al sistema ioctl. Tengo un archivo de cabecera con las definiciones de interfaz ioctl del controlador del núcleo (es decir #defines para los números de comando ioctl, y las definiciones struct para los diversos datos enviados a ioctl).
veo que strace tiene la capacidad de retirar la información punteros de usuario que se transmiten en las llamadas al sistema, pero, obviamente, no puede de-referencia mis estructuras personalizados que se pasan en ioctl. ¿Hay una forma fácil de añadir a mis definiciones strace para que pueda obtener datos significativos que se pasaron a ioctl, en lugar de sólo una dirección de puntero?
tengo la fuente de strace y compilado con éxito / instalado, pero todos mis intentos de incluir mi propia cabecera he tenido ningún efecto.
Solución
La acumulación strace no introspección automáticamente estructuras y generar programas de análisis para ellos -. Que tendrá que escribir código para manejar sus estructuras
Otros consejos
La forma más sencilla de lograr esto puede ser escribir una biblioteca de interposición ioctl()
. Hay una buena guía para hacer esto en Linux aquí .
Puede comprobar si los números de comandos personalizados que utiliza su aplicación; y volcar las estructuras de estos.