-
-
对利用cpu预读指令防跟踪的疑问。[求助]
-
发表于:
2005-7-6 00:24
4135
-
用指令预取反跟踪
作者:罗云彬・发布日期:1998-3-1・阅读次数:1961
--------------------------------------------------------------------------------
概述:
CPU 的执行时并不是执行到哪一句再到内存中去取那一句,而是先读入到 CPU 的 Cache 中,如果指令已经到了 Cache 中,再将它修改也没有用了,如果用跟踪程序的话,CPU 的 Cache 中就不会是跟正常执行时的指令相同,所以可以改动下几条指令,当然是故意改错,如果没有跟踪,程序还回照常执行,有跟踪的话,那就...
汇编编程示例:
code segment
assume cs:code,ds:code
org 100h
start:
jmp install
d1 db 'OK, passed ...',0dh,0ah,24h
install:
mov word ptr _code,20cdh
_code:
nop ;如果跟踪一下,就会发现下一条指令是 INT 20H,返回 DOS 了
nop
mov si,offset _code1
mov di,si
cld
mov ax,20cdh
stosw
lodsw
_code1:
nop
nop
mov ah,9 ;now ax=20cdh
mov dx,offset d1
int 21h
int 20h
code ends
end start
我做了个程序测试vc6.
void main()
{
__asm{
mov word ptr _code,20cdh
_code:
nop
nop
}
MessageBox(0,"OK",0,0);
}
发现无论是否跟踪, 都执行了int 20这个代码。 程序非法操作。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!