Анти-отладка с использованием очереди предварительной выборки не работает с моим процессором
Почему этот код позволяет мне обнаруживать отладчик?
Ссылка выше подсказала мне способ использовать очередь предварительной выборки для анти-отладки, затем я попытался использовать приведенный ниже код для тестирования, но мне это не удалось. Может ли кто-нибудь помочь мне указать, если мой код неверен. Мой процессор - Intel® Core ™ (i7-2630QM 2,00 ГГц). большое спасибо
ML: D: \ Programs \ masm32 \ Bin \ ML.EXE / c / coff / Cp / nologo / I & quot; D: \ Programs \ masm32 \ Include & quot; & Quot; AntiDebug.asm & Quot;
Link: D: \ Programs \ masm32 \ Bin \ LINK.EXE /SECTION:.text,RWE / SUBSYSTEM: WINDOWS / RELEASE /VERSION:4.0 / LIBPATH: & quot; D: \ Programs \ masm32 \ Lib & quot; /OUT:"AntiDebug.exe" & Quot; AntiDebug.obj & Quot;
Он всегда выполняет отладочную метку, независимо от того, отлаживаю я или нет, и никогда не выполнит «jmp normal».
.386
.model flat, stdcall ;32 bit memory model
option casemap :none ;case sensitive
include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib
.data
szDebug db 'Hey, you are debugging!!!',0
szError db 'Error',0
szNormal db 'You are running it without debugging',0
szPrompt db 'Prompt',0
.code
start:
call IsDebug
debug:
invoke MessageBox, NULL, addr szDebug, addr szError, MB_OK
invoke ExitProcess, -1
normal:
invoke MessageBox, NULL, addr szNormal, addr szPrompt, MB_OK
invoke ExitProcess, 0
IsDebug:
mov al, 0c3h
mov edi, offset IsDebug
mov cx, 20h
rep stosb
jmp normal
end start