首页
社区
课程
招聘
[讨论]要是有前一指令的地址的寄存器就好了
发表于: 2014-3-23 00:40 5525

[讨论]要是有前一指令的地址的寄存器就好了

2014-3-23 00:40
5525
我知道EIP裏是當前指令的地址,不過有的時候我們更需要知道的是前一條指令在哪裏,就call而言可以查看stack,但是jump就沒辦法了,只能再從頭跟蹤下BP。因此要是能增加一個寄存器存放前一條指令的地址就好了。

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
eip 是指向下一条指令地址(不是当前),call 后的 stack 存在的返回地址也是 call 指令后的下一条指令
2014-3-23 09:34
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
3
哥们如果你用OD调试器的话,要知道快捷键“-”号的妙用,这不就是你要找的吗
2014-3-23 10:31
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这是个好主意啊。建议把你的想法告诉intel就好了,或者告诉amd也可以。
当年,vmware不就是在没有vt技术的情况下开发了虚拟机吗,以后才有amd和intel支持虚拟机技术。
2014-3-23 10:35
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很有创意的想法,精神上支持
2014-3-23 13:14
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
这个必须有硬件支持,例如CPU上加一个寄存器最近一次EIP改变时的值。

单靠软件是不能是实现你要的功能的。如果你在OD里用F8调试,那么所有被单步的指令使用“-”号键都可以回退查看。但是用F8步过的函数或者F9就不可以用了。

在OD中实现完全记录程序运行流程需要用到“RUN追踪”功能,但是那个效率太低了,运行程序就好像死机一样,慢的要死。

以前看过一个帖子,说英特尔的处理器,除了支持VT外,还支持分支追踪?还是指令追踪?记不清了,但是好像没见过有人真的再用这个。
2014-3-23 15:32
0
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
在盏里能找到的 为什么要加寄存器多麻烦啊
2014-3-23 19:07
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
噢,多谢指正。
2014-3-23 22:49
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是啊,有硬件支持就方便多了。
2014-3-23 22:51
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
jmp就没有堆栈
2014-3-23 22:52
0
雪    币: 15
活跃值: (28)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
jmp XXX
jmp [XXX]
这样的还可以搜索的到
要是jmp eax这样就完全没办法了
脱壳遇到偷代码的话这种情况很麻烦啊
2014-3-25 19:07
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
Broadwell-DE...
全新加入的Processor Trace(可捕获代码执行细节)...
intel果然就加入了硬件跟踪功能了。
2014-6-27 08:34
0
雪    币: 215
活跃值: (90)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
以前也有这种想法,但是后来觉得没有必要,这种寄存器除了调试外,其他还有哪个地方用到呢?
2014-6-27 09:55
0
游客
登录 | 注册 方可回帖
返回
//