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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top