找到了一个不错的代码片段(https://github.com/invictus1306/Anti-debugging-techniques/blob/master/anti-debugging.asm),用于asm中的反调试机制。 我的问题是有关以下代码段:
;IsDebuggerPresent first - kernel32!IsDebuggerPresent
call IsDebuggerPresent
call @eip_manipulate ; change eip (point to next instruction)
mov eax, 010h
cmp eax, 1
je @Detected
[...]
@eip_manipulate:
add dword ptr [esp], 5
ret
我不明白为什么我必须改变这一点。因为如果我调用isDebuggerPresent,它将为debuggerIsPresent返回1或为debuggerIsNotPresent返回0。 尝试过此方法,它仅适用于eip_manipulate调用。