首页
社区
课程
招聘
看来SICE也要求机器性能够劲才好使~
发表于: 2007-2-24 19:24 3960

看来SICE也要求机器性能够劲才好使~

2007-2-24 19:24
3960
拦截一个消息处理函数,在函数如口处设了一条件断点,bpx xxxxxxxx IF *(esp+c)==400.
有趣的事情就出现了.在一台古董P3机器上,发现SI无法拦下来,而且还出现随机的死机.而如果我把这个断点改成在函数内部的一个分支处,比如这样:
mov eax, [esp+1c];取消息码放入eax
cmp eax, 111h;    判断消息,我在这条指令上设断,条件改成IF eax==400.
OK,啥问题就没有了.
刚开始莫名其妙,后来想是不是因为这个函数是个工作频率极高的函数,没准每秒钟上百万次呢,HOHO~所以设在入口的话,由于处理器速度慢导致SI拦截出错.而设在内部分支处的话,频率就大大降低了,SI工作正常.
于是我在另一台P4机器上,同样的方法,证实了我的想法.这台P4机器上在入口处拦截一点问题都没有.
由此得出结论,用SI下断点也要考虑断点处的工作频率和机器的性能,否则就可能会出现理论上本不该出现的错误.还有一般拦截API函数我们都是bpx 函数名.看来这样是不好的,因为API是整个系统共享的,其工作频率也可能极高.比较好的办法是在想跟踪的软件上,下一个IAT表的读断点.这样就只拦截被跟踪软件的API了.保证了拦截的可靠性~

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
机器是革命的本钱
2007-2-24 20:05
0
雪    币: 2054
活跃值: (282)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
3
......
2007-2-25 10:08
0
雪    币: 106
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在虚拟机中呢?
2007-2-26 10:52
0
游客
登录 | 注册 方可回帖
返回
//