¿Cómo puede un probador de software superar una falla de segmentación?

Tienes alguna oportunidad
Supongo que tiene un ejecutable nativo (los ejecutables vm son lo mismo, pero más fácil).
En primer lugar, recopile toda la información posible del sistema sobre la falla de segmentación: un sistema operativo normal al menos debería ofrecer el estado de los registros (eax, ebx, … y especialmente eip) y algún volcado de la memoria (seguimiento de pila, volcado de memoria, etc.) después de eso Puedes hacer un análisis estático y / o dinámico:

Estático

Vuelca el código de ensamblaje de su ejecutable y usa la información de eip para localizar la línea ofensiva. Esta información puede ser muy útil: es razonable que de esta manera también pueda comprender qué función contiene la línea ofensiva (especialmente si el binario no está despojado), que puede brindar mucha ayuda para intentar reproducir el problema (puede estresarse una parte específica del código)

Dinámica

Si tiene un buen depurador, puede ejecutar sus archivos binarios debajo y poner un punto de interrupción en la parte infractora del código. Si bien, en general, no puede reproducir siempre, el problema al ejecutar el código bajo un depurador le permite comprender el comportamiento normal de la función, es el seguimiento normal de la pila, etc.

En general, necesita el mismo conjunto de habilidades y herramientas necesarias para realizar la ingeniería inversa de los ejecutables.
También puedes practicar este conjunto de habilidades con el llamado Crackme

En general, no puede hacerlo sin cambiar el código ofensivo. Si está en una tienda clásica donde los evaluadores no cambian / compilan el código, todas las apuestas están canceladas. Su mejor estrategia es reducir lo mejor posible cómo reproducir la falla de segmentación.

Si usted es un taller de pruebas de caja blanca, debería poder encontrar la línea de código ofensiva. gdb es tu amigo