我目前正在阅读“终极反调试参考”,并且正在尝试实施一些技术。
要检查 NtglobalFlag 的值,他们使用此代码 -
push 60h
pop rsi
gs:lodsq ;Process Environment Block
mov al, [rsi*2+rax-14h] ;NtGlobalFlag
and al, 70h
cmp al, 70h
je being_debugged
我对在 Visual Studio 2017 上运行 x64 代码进行了所有正确的调整,我使用了本教程。
我使用此指令访问 NtGlobalFlag
lodsq gs:[rsi]
因为他们的语法在 Visual Studio 上不起作用。
但是,它仍然没有用。
在调试时,我注意到gs寄存器的值设置为 0x0000000000000000,而fs寄存器设置为实际值 0x0000007595377000。
我不明白为什么GS的值为零,因为它的值应该设置在 x64 上。