od里看了下
IsDebuggerPresent的实现代码就三条指令
mov eax,dword ptr fs:[18h]
mov eax,dword ptr [eax+30h]
movzx eax,byte ptr [eax+2h]
也就是BYTE PTR [[fs:[18h]+30h]+2h](未声明均表示DWORD类型)的值就表示是否在调试环境中
问题1:用masm实现时发现,必须先assume fs:nothing
否侧就提示非法使用寄存器,为什么?
问题2:fs在我的机子中的值是03bh,为什么
fs:[00000018]=[7FFDD018]=7FFDD000