Pregunta:
Método canónico para eludir la técnica antidebugging ZwSetInformationThread
ŹV -
2013-03-24 03:18:53 UTC
view on stackexchange narkive permalink

Estoy seguro de que muchos de ustedes están familiarizados con este clásico truco anti-errores que se logra llamando a ZwSetInformationThread con ThreadInformationClass configurado en 0x11. Aunque existen muchos módulos de OllyDbg con el propósito de revelar la existencia de subprocesos ocultos con este método, no he podido encontrar ninguna información sobre la técnica canónica empleada para mostrar estos subprocesos en OllyDbg.

¿La función generalmente está enganchada en modo de usuario (por ejemplo, SetWindowsHookEx ), o es más pragmático parchear instrucciones que llaman a la función NTDLL directamente o llamadas al sistema que la invocan indirectamente?

One responder:
Peter Andersson
2013-03-24 03:51:25 UTC
view on stackexchange narkive permalink

SetWindowsHookEx no se usa realmente para este tipo de enganche que yo sepa.

Puede conectar NtSetInformationThread en la importación del binario que desea analizar y hacer que siempre devuelva el éxito en ThreadHideFromDebugger pero no reenvíe la llamada a la función real. Esto sería débil ya que GetProcAddress o las importaciones manuales lo omitirían.

Puede conectar la función NtSetInformationThread insertando una llamada a su propia función en el prólogo de la función y luego ignorar ThreadHideFromDebugger mientras reenvía el resto a la función original .

Le recomiendo firmemente que no lo haga, pero en aras de la integridad, también puede enganchar NtSetInformationThread en la tabla de despacho del servicio del sistema. Hay un buen volcado de la tabla para diferentes versiones de Windows aquí. Si desea obtener el índice en la tabla usted mismo, simplemente puede desensamblar la exportación NtSetInformationThread de ntdll.dll.

Si está interesado en más técnicas anti-depuración, le recomendamos que lea Peter Ferrie's awesome referencia contra la depuración.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...