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