首页
社区
课程
招聘
[求助][求助][求助]用OD调试出错的程序,竟然不能中断
发表于: 2013-11-23 23:31 5344

[求助][求助][求助]用OD调试出错的程序,竟然不能中断

2013-11-23 23:31
5344
本人用C++写了个控制台测试程序:
int main()
{
     _asm int 3;
     return 0;
}

用OD调试之:
  1: int3
2:  xor     eax, eax
3:  retn

执行到1处时,按F8后弹出这样的错误框:

即用OD单步执行了一个int3指令后,这个被调试的程序竟然直接出错并弹框了,而且此时,OD也不能继续把它给调试下去了。
OD->option->Exceptions中选项是这样的:

程序代码中出点错,OD就不能继续调试下去了,这样很不方便啊。
按照我的设想,应该是,程序运行中遇到int3、除0、页面异常等错误的时候,OD应该中断在出错的那行代码处。
求大神解救!!感激不尽!!!

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1392
活跃值: (5137)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
OD是不会自己处理 用户的INT 3断点的。
也就是说他只会处理自己的INT 3
2013-11-23 23:35
0
雪    币: 0
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
那OD中断下也好哇,不然莫名其妙地死掉,不方便哇。
option->Exceptions里的选项是干什么用的?难道不能起到中断的作用么?
2013-11-23 23:40
0
雪    币: 807
活跃值: (2228)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是C++的异常处理过于强大,用win32汇编写这几条指令编译再调试看看呢。
2013-11-24 04:07
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
od attach上之后,手动将那个int 3改写成0x90试试
2013-11-24 09:49
0
雪    币: 6525
活跃值: (3383)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
OD的异常选项,是运行时遇到某个异常而停下用的

int3 语句会自动断下,所以不需要设置什么,把异常选项全勾上
再把StrongOD 的 Skip Some Exceptions 选项去掉
最后运行,就能中断了

其他的异常,自己设置,断不下的原因主要是StrongOD或其他插件的设置问题
2013-11-24 13:37
0
雪    币: 0
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
感谢各位热心解答,尤其是Kisesy。
对于OD里的Exceptions选项:

假如我勾选了INT3 breaks选项,是不是意味着,被调试程序中执行到int3指令时产生的异常,OD并不处理它,所以被调试程序的SEH将收到这个异常。反之,若取消勾选该选项,则意味着执行到该int3指令时,被调试程序的SEH收不到这个异常,那么OD将会处理它,即OD会选择中断到该指令处,由用户抉择。
是这样的么?
上传的附件:
2013-11-24 16:53
0
游客
登录 | 注册 方可回帖
返回
//