首页
社区
课程
招聘
[求助]如何精确追踪异常发生的位置
发表于: 2011-4-15 17:49 5385

[求助]如何精确追踪异常发生的位置

2011-4-15 17:49
5385
比如一个简单测试。
        __asm
        {
                push 0x00000000;
                ret
        }
就会产生一个内存访问错误,最后由U.E.F处理弹出错误对话框。

点调试进入调试程序。

但这时OD里空无一物,接下来如何找到产生异常代码的确切位置呢?
分析堆栈调用信息是可以模糊定位,但如果程序复杂,也很难找到具体位置,求助各位大神有何更简单直接的方法呢?

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 3098
活跃值: (229)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
把你的东西发上来看看~
2011-4-15 20:12
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我贴的图就是
__asm
  {
    push 0x00000000;
    ret
  }
这个测试例子哈。 1.rar

主要是想找到一个通用的定位异常发生代码的位置的方法,目的不是具体要分析哪个软件。
想到这个问题是因为机子上Adobe Acrobat 9.3经常出错,一直想要调试一下。
上传的附件:
2011-4-16 12:17
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
就没有什么地方直接保存异常地址么?求回复
2011-4-16 20:42
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
Sorry ,楼主想得很好,但是这是不可能的(你自己跟踪除外)。
你刚才写的代码,出现异常的不是ret处,而是0x00000000处。因为[esp]可读....剩下楼主一定知道原因吧?
2011-4-17 18:29
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
如果一定要这样找的话~只有虚拟机了,把程序的运行流程保存下来,出错的前一个指令就是错误的ret
2011-4-17 18:31
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个,怎么操作?
或者分析堆栈的话有没有什么其他技巧。
有时因为溢出太多,把整个栈都破坏了,想找到前一个执行函数都很难。
谢了。
2011-4-17 19:40
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
虚拟机~这个我不会…不能帮你了…你把你的问题说一下,也许有其它的方法来解决^_^
2011-4-18 11:22
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
具体问题具体分析吧,我只是想找些逆向分析软件错误的技巧,看看都有哪些方法。但找了半天,好像只有分析堆栈一条路。

小型没加壳处理过的软件可以拿白眉来分析,但大软件画出的图像太乱了,介绍用法的文章也不多。而且关键是软件出问题的时候是随机的,在没有POC的情况下只能一直开着白眉,很费资源。
2011-4-18 15:56
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
10
~我看不懂~什么白眉,POC,完全不懂~
2011-4-18 16:21
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
白眉是个调试软件哈,oday安全里有介绍,不过很不详细。
POC是(proof of concept)指能够稳定重现软件错误的方法或代码。

谢谢热心帮助,几天了,还是结贴吧。
2011-4-18 16:48
0
游客
登录 | 注册 方可回帖
返回
//