[TUTORIAL] Anti Debugging Tricks #4 – Ocultando Hilos

  • Hola Invitado ¿Quieres conversar con todos los usuarios de GamerzHacking?, No esperes mas y entra al canal de Discord dando clic AQUI
  • Hola Invitado, hemos decidido no subir mas videos de Game Hacking a la mierda de YouTube, mas informacion AQUI. Nuestro nuevo canal de videos ahora es COCOSCOPE.
  • Hola Invitado ¿Quieres formar parte del Staff de GamerzHacking?, No esperes mas y entra al siguiente enlace AQUI
  • Hola Invitado ¿Eres programador y quieres pertenercer GamerzHacking?, No esperes mas y entra a postular aqui AQUI

The Nullz

Administrador
Miembro del equipo
1 Nov 2015
1.206
227
63
28
Lima
gamerzhacking.com
327
¿Te ha sucedido esto alguna vez? ¿Estás jugando con alguna aplicación y se bloquea en el momento en que tachan algún debugger? ¿Alguna vez te has preguntado por qué o cómo? Muchas veces me lo pregunte para los juegos que utilizan anti cheats.

Me di cuenta por primera vez de esta técnica mientras navegaba por algunos foros en Internet. La gente suele pedir un bypass o un método para solucionarlo. Pero estaba más interesado en CÓMO esta técnica funciona menos interesado en cómo evitarla.

Durante mi fase de investigación, noté que después de que la aplicación fallara, se caería con:

Insertar CODE, HTML o PHP:
Por favor, Acceder o Registrarse para ver el codigo.
¿Pero eso es una
Por favor, Acceder o Registrarse para ver el contenido de las URL!
? ¿Cómo es que el depurador no está captando eso? Lo que el infierno real. Buscando información, descubrí que
Por favor, Acceder o Registrarse para ver el contenido de las URL!
tiene un parámetro llamado
Por favor, Acceder o Registrarse para ver el contenido de las URL!
. Que contiene este interesante fragmento de código:

Insertar CODE, HTML o PHP:
Por favor, Acceder o Registrarse para ver el codigo.
¿Por qué?

Quizás se pregunte por qué esto es incluso una "característica" de Windows. ¿Acaso el malware no abusaría de esto?, Si probablemente. Pero he aquí por qué existe: cuando se adjunta un depurador a un proceso remoto, se crea un nuevo hilo. Si esto fuera solo un hilo normal, el depurador quedaría atrapado en un bucle sin fin cuando intentara detener su propia ejecución.

Entonces, detrás de la escena cuando se crea el hilo de depuración, Windows llama a NtSetInformationThread con el conjunto de indicadores ThreadHideFromDebugger (1). De esta manera, el proceso se puede depurar y se evita un punto muerto. Permitiendo que la ejecución del código continúe normalmente.

Sin embargo, ahora que este subproceso está oculto para el depurador, cualquier punto de interrupción o excepción que se active provocará que el proceso se bloquee. Debido al hecho de que el depurador no puede ver este hilo, ahora no puede interceptar estos eventos.

Así que resultó que un individuo intrépido se dio cuenta de este extraño comportamiento y pensó: "esto haría una característica anti-depuración realmente genial". Ahora estamos aquí con este método lo suficientemente extendido como para que yo lo sepa.

Entonces, ¿cómo se ve realmente en el código? No pude encontrar ningún ejemplo en vivo, así que construí mi propio basado en cómo pensé que debería funcionar:

C++:
Por favor, Acceder o Registrarse para ver el codigo.
¿Bastante simple si? Ahora, si ejecuta el programa e intenta adjuntar un depurador, obtendrá este bloqueo interesante:

Insertar CODE, HTML o PHP:
Por favor, Acceder o Registrarse para ver el codigo.
Bueno, ahora hemos establecido cómo funciona esto, podemos ver cómo vencerlo. Hay varias maneras, incluyendo:
  • Hook(Enganchar) a las llamadas necesarias de la función Nt.
  • Reemplazando la instrucción int 3 con un nop.
  • Acercar o enganchar la función de "disparador".
Opté por interrumpir int 3:

Puede utilizar su herramienta de elección para ubicar la instrucción int 3 requerida:

328

Tendrás que buscar un poco

329

Aquí está nuestro hilo con el check.

330

Ahora podemos NOPEAR.

Tachan un depurador y reanudar la ejecución resultará en que todo funcione como se espera.

One Time Donation:
BTC 1DXcjix3FmcHYezFAjCrpzZA9FkbSC971e
Paypal
Por favor, Acceder o Registrarse para ver el contenido de las URL!


Monthly Donation:
Por favor, Acceder o Registrarse para ver el contenido de las URL!


Creditos:
timb3r
 
Última edición: