Anti-debugowanie przy użyciu kolejki pobierania wstępnego nie działa z moją procesorem

Dlaczego ten kod pozwala mi wykryć debuger?

Powyższy link powiedział mi, jak używać kolejki pobierania wstępnego do anty-debugowania, a następnie próbowałem użyć poniższego kodu do testowania, ale nie powiodło się. Czy ktoś może mi pomóc wskazać, czy mój kod jest błędny. Mój procesor to Intel (R) Core (TM) i7-2630QM 2,00 GHz. Wielkie dzięki

ML: D: Programy mm32 Bin ML.EXE / c / coff / Cp / nologo / I "D: Programy mm32 Dołącz" AntiDebug.asm "

Połączyć: D: Programy m32 Kosz LINK.EXE / SEKCJA :. tekst, RWE / PODSYSTEM: WINDOWS / RELEASE / WERSJA: 4.0 / LIBPATH: "D: Programy „„ AntiDebug.obj ”

Zawsze wykonuje etykietę debugowania bez względu na to, czy debuguję, czy nie, i nigdy nie wykona „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

questionAnswers(1)

yourAnswerToTheQuestion