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.