¿Es posible escribir un programa bajo Windows que hará que se rompa un hilo de proceso remoto (al detener la ejecución en ese hilo) al llegar a una dirección predefinida?Escribiendo un depurador muy básico
He estado experimentando con Windows Debug API, pero parece muy limitado cuando se trata de establecer puntos de interrupción. La función DebugBreakProcess parecía prometedora, pero no puedo encontrar ningún ejemplo sobre cómo usar esta llamada API.
Así que podría hacer algo como: 1. Leer la operación actual en la dirección predefinida (PA) y almacenarla 2. Reemplazar la operación con 0xCC y NOPS para generar una excepción int 3 (¿La excepción int 3 automáticamente? ¿detener la ejecución?) 3. Captura el EXCEPTION_DEBUG_EVENT 4. He detenido la ejecución del hilo correctamente pero he reemplazado parte del código y obtendré resultados inesperados. Podría intentar volver a escribir el OP almacenado en el PA, pero ¿no será demasiado tarde? ¿Puedo forzar el hilo remoto para ejecutar el OP de alguna forma? – ldog
No será demasiado tarde para aplicar el parche: la dirección IP de destino no ha cambiado y continuar causará que el debugee vuelva a emitir la excepción si no ha cambiado el código. – Michael
Tengo problemas parcheando. Puedo establecer el punto de ruptura y puedo atrapar la excepción de punto de interrupción, pero cuando intento escribir WriteProcessMemory para volver a escribir el código de operación original obtengo Excepciones de Voz de Acceso, lo que significa que el programa no ejecuta el código correctamente. Hago un FlushInstructionCache después de WriteProcessMemory, pero no parece ayudar. – ldog