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)?

¿Fue útil?

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
scroll top