Dlaczego ten kod pozwala mi wykryć debuger?

Dlaczego poniższy kod zespołu jest narzędziem zapobiegającym debugowaniu?

<code>l1:
call l3
l2:
;some code
l3:
mov al, 0c3h
mov edi, offset l3
or ecx, -1
rep stosb
</code>

wiem toC3h jestRETN i wiem tostobs zapisuje wartość wal jako opcode zgodnie z przesunięciem wedi i jest to zrobione dlaecx razy z powodurep.

Jestem również świadomy tego, żestobs istosw będzie działać, jeśli zostały pobrane z architektury intel jako oryginalny format.

Jeśli uruchomimy program w trybie debugowania, pre-fetch jest nieistotny i etykieta l2 zostanie uruchomiona (ponieważ jest jednostopniowa), w przeciwnym razie, jeśli nie ma debugera, będzie to ping-pong między l1 a l3.

questionAnswers(2)

yourAnswerToTheQuestion