内存损坏的崩溃分析

时间:2017-09-22 12:56:11

标签: c++ assembly gdb crash-dumps

这个问题是为了获得想法。所以基本上我们遇到了一个特殊的崩溃,其中回溯在某个帧之上是没有意义的。这是基于ARM的二进制文件。我们还无法重现这个问题,从而加强了分析。首先是一些观察结果:

  • 几乎所有必需的库的未提取的共享库都可用,因此回溯应该是正常的
  • 但是,回溯指向第3帧到内存地址,这显然不在代码段中
  • 在一些参数参数中也可以看到有问题的内存地址
  • 注册信息显示R3寄存器上的未对齐地址。反汇编表明它是ASM操作,这是根本原因 - 它引起了sigbus。

总而言之,这是因为内存,堆栈等损坏。我现在只有有限的信息。我想追溯至少这个电话来的地方,但由于腐败,我现在无法找到它。

你有什么想法,如何处理这些问题?任何工具,可以帮助我分析装配流程和数据,并在更好的环境中注册,可能以更直观的方式查看堆栈等?非常感谢提前!

编辑:更准确一点:你怎么试着找出第2帧以上的东西?在某些情况下是否有可能将其解码回来,即使堆栈以某种方式损坏了?或者找出它破坏了什么?

EDIT2:我想我会调试那个功能,我在崩溃前看到了一个特定的日志行。我将放置一个断点并检查调用的来源,虽然它是一个非常通用的方法,加上初始化函数的命令非常模糊。没有其他线索。你有一些“从核心文件中直观阅读ASM级数据”工具的想法吗?

0 个答案:

没有答案