Почему этот код позволяет обнаружить отладчик?

Почему следующий ассемблерный код является средством от-отладки?

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

Я знаю, что C3h — это RETN, и я знаю, что stobsзаписывает значение в alкак код операции в соответствии со смещением в edi, и это делается ecxраз. из-за rep.

Мне также известно, что stobsи stoswбудут работать, если они были предварительно-выгружены на архитектуре Intel в качестве исходного формата.

Если мы запустим программу в режиме отладки, предварительная-выборка не имеет значения, и метка l2 будет выполняться (,потому что это один-шаг), в противном случае, если нет отладчика, будет выполняться ping-pong между l1 и l3 я прав?

16
задан 0x90 19 April 2014 в 09:19
поделиться