Por que esse código me permite detectar um depurador?
Por que o seguinte código assembly é uma ferramenta anti-depuração?
l1:
call l3
l2:
;some code
l3:
mov al, 0c3h
mov edi, offset l3
or ecx, -1
rep stosb
Eu sei dissoC3h éRETN
e eu sei dissostobs
escreve o valor emal
como opcode de acordo com o deslocamento emedi
e isso é feito paraecx
vezes por causa derep
.
Eu também estou ciente do fato de questobs
estosw
será executado se eles foram pré-buscados na arquitetura intel como seu formato original.
Se executarmos o programa no modo de depuração, a pré-busca é irrelevante e o rótulo l2 será executado (porque é de etapa única), caso contrário, se não houver depurador, será pingue-pongue entre l1 e l3, certo?