Deshabilita que EXCEPTION_DEBUG_EVENT se pase a un depurador adjunto
-
05-07-2019 - |
Pregunta
Estoy tratando con una aplicación anti-depuración que desactiva la transmisión de EXCEPTION_DEBUG_EVENT a mi depurador, en lugar de eso ejecuta sus SEH y UnhandledExceptionFilters.
- Lo probé con 3 depuradores diferentes (incluso uno mismo)
- Mi depurador recibe otros eventos de depuración como LOAD_DLL, CREATE_THREAD, etc.
- Las excepciones no se pasan cuando la primera oportunidad depura así como la última oportunidad
- Los eventos de punto de interrupción de mis propios subprocesos creados se pasan al depurador, por lo que el método anti-debug debe ser específico del subproceso y puede ser una modificación del ThreadInformationBlock
- No hay acceso al modo kernel
Entonces, ¿cómo puede ser posible en el modo de usuario pasar EXCEPTION_DEBUG_EVENT (solo para un hilo, que no afecta a todo el proceso)?
Solución
Bueno ... la solución es bastante simple:
llamada
NtSetInformationThread(
IN HANDLE ThreadHandle,
IN THREAD_INFORMATION_CLASS ThreadInformationClass,
IN PVOID ThreadInformation,
IN ULONG ThreadInformationLength );
con ThreadHideFromDebugger (0x11)
como ThreadInformationClass
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow