¿Por qué este código me permite detectar un depurador?
¿Por qué el siguiente código de ensamblaje es una herramienta anti-depuración?
<code>l1: call l3 l2: ;some code l3: mov al, 0c3h mov edi, offset l3 or ecx, -1 rep stosb </code>
Yo sé esoC3h esRETN
y yo sé questobs
escribe el valor enal
como opcode de acuerdo con el desplazamiento enedi
y esta hecho paraecx
veces debido arep
.
También soy consciente del hecho de questobs
ystosw
se ejecutará si fueron pre-buscados en la arquitectura Intel como su formato original.
Si ejecutamos el programa en modo depurado, la búsqueda previa es irrelevante y la etiqueta l2 se ejecutará (porque es de un solo paso); de lo contrario, si no hay un depurador, habrá ping-pong entre l1 y l3 ¿Estoy en lo cierto?