首页
社区
课程
招聘
对指令下断点
发表于: 2013-12-3 22:53 4400

对指令下断点

2013-12-3 22:53
4400
在程序某段指令执行时,我想记录(或断点断下)一类指令的地址:

指令:
call [reg32]
reg32表示的是任意一个32位寄存器。

尝试过用OD的run trace跟踪,然后查看记录的内容。
发现这么记录下去,文件十分大啊,查找也不方面。

也试过[ run跟踪->跟踪部分内容 ],发现程序里太多这类指令了,一千多条,没办法手动选择。

是否有调试器,有相关语法规则,可以只跟踪、记录下这类指令?或者只对这类指令下断点呢?
有没有软件已经有了这样功能了的?

理解又加深了,在此谢谢各位啦,后来找了另外的途径,特别感谢冬夜的前辈!

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在OD反汇编窗口,右击,查找->所有命令,输入“call reg[32]”,单击查找。在弹出的查找结果窗口中右击,在每个命令上设置断点。如果有部分没有被断的,用F2断下即可。
2013-12-7 16:48
0
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
分析下你问题:
1. 断点有两类,一类是cpu支持的数据断点,一类是调试器实现的普通断点。你要的断点只能通过普通断点间接实现。
2. 普通断点的实现是,调试器更改被调试程序的内存,将代码段的指令改成int3(cc),触发断点后再由调试器恢复。
3. 根据你的情况,需要在搜索所有汇编,在找到的位置插入断点。因为刚才说的断点的实现,加错位置的断点是有风险的,所以要精确添加。
4. 批量查找添加,这类操作肯定由脚本一类的实现比较好。windbg可以做到这些,不过代价会比较大,s命令可以查找但要精确判断是否是汇编指令还需要其他验证,# call????e[a-ds][ix]这个命令可以精确查找但是输出格式受限,所以还要加一堆解析判断,最终要做的会比较多。

做你想要的这种断点的工作量会比较大,实际上你想要达到的效果肯定可以通过其他的方式来实现,花费绝对比这个要小很多。
2013-12-20 10:52
0
雪    币: 15
活跃值: (28)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
脚本搜索指令,不过有可能下到其他指令中间
2013-12-20 18:51
0
游客
登录 | 注册 方可回帖
返回
//