Entendiendo una falla

2

Diga que está confundiendo una aplicación de Windows x32 para un error de formato de archivo y, por ejemplo, encontró un patrón que hace que la aplicación se bloquee.

Mis pasos normales son:

  • cargar la aplicación en un depurador
  • generar e investigar el accidente.

En mis condiciones reales, puedo ver mi patrón en la pila pero, en el momento del bloqueo, no puedo encontrar ningún registro afectado ni sobrescritura de SEH, pero solo cuál es la instrucción que causa el bloqueo:

MOV WORD PTR DS:[EDI+2],DX

básicamente, no puede escribir porque es un área de memoria no asignada.

Debo admitir que estoy completamente perdido porque no puedo proceder a verificar las compensaciones en la memoria.

    
pregunta Kartone 10.01.2018 - 23:40
fuente

1 respuesta

3

La entrada del archivo probablemente ha afectado el valor de EDI de alguna manera, o ha provocado que el flujo de control tome una ruta que de otra forma no tomaría. Normalmente volvería a leer algunas instrucciones e intentaría determinar cómo llegó el EDI a tener ese valor, o tal vez romper al principio de la función en la que se produce el bloqueo y pasar por él (o algunas funciones más arriba en la pila). p>

Otra opción relativamente nueva sería usar WinDbg's función de depuración de viajes en el tiempo Puede dejar que se ejecute en el depurador hasta el bloqueo, luego retroceder en la ejecución para averiguar cómo llegó al bloqueo.

Obviamente, si tienes una fuente, estarás mucho mejor mirándolo de manera paralela para descubrir qué sucedió.

    
respondido por el David 11.01.2018 - 08:26
fuente

Lea otras preguntas en las etiquetas