首页
社区
课程
招聘
[分享]F2与F7原理的理解
发表于: 2012-3-29 16:44 2807

[分享]F2与F7原理的理解

2012-3-29 16:44
2807
看过坛子里好多大牛关于断点原理的介绍。可是F2与F7的原理始终有点模糊,于是今天用了一些时间,并经过一些实验,总结了一下。应该不算什么成果。只是为了那些跟我一样搞不懂F2与F7区别的人写的~·~

F2是将所选行的第一个字节替换成CC(int 3),F7是将当前的TF标志置为1(会执行int 1)。

int 3与将TF标志置1在调试器中的区别:
int 3:程序将断在int 3处。

将TF置1:程序将断在下一条原子操作处,并将TF位清零。原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行倒结束,中间不会有任何 context switch (切换到另一个线程)。call指令是原子操作,它的作用是:将返回地址压栈,并跳转。所以,在调用call的时候,如果我们将TF置1,那么程序将在call指令的功能完成以后(即将返回地址压栈并跳转)断下来。而执行call内的语句则仅仅是call的逻辑功能(我们理解的功能),并非实际的功能(CPU理解的功能)。

搞清楚call的实际作用,再来理解F2与F7原理的不同应该就没什么问题了。

有什么不对的地方欢迎大家指正~_~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//