首页
社区
课程
招聘
对利用cpu预读指令防跟踪的疑问。[求助]
发表于: 2005-7-6 00:24 4136

对利用cpu预读指令防跟踪的疑问。[求助]

2005-7-6 00:24
4136
用指令预取反跟踪  
作者:罗云彬・发布日期: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这个代码。 程序非法操作。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
哦。 是05号内存越界错误,发现根本不能修改指令。
但后来加过一个section的时候, 发现又可以, 是什么原因啊?
2005-7-6 00:27
0
游客
登录 | 注册 方可回帖
返回
//