为什么下面的汇编代码是反调试工具?
l1:
call l3
l2:
;some code
l3:
mov al, 0c3h
mov edi, offset l3
or ecx, -1
rep stosb
我知道C3h是RETN
,并且我知道根据偏移量stobs
将值写入操作码,并且由于.al
edi
ecx
rep
我也知道如果它们在英特尔架构上作为其原始格式预取,stobs
并且将运行。stosw
如果我们以调试模式运行程序,则预取无关紧要,并且 l2 标签将运行(因为它是单步的),否则如果没有调试器,它将在 l1 和 l3 之间进行乒乓操作,对吗?