trace32 恢复call back function

首先查看寄存器内容
和笔记内容(22)
R13是当前栈顶,查看R13的dump信息,并往下找尾数为奇数的值,这种就是非正常地址,因为arm中4字节对其,尾数应该都为偶数,如下图标黄的部分

和笔记内容(22)

然后依次分析每一个非正常值,先看第一个0x 700010A3,点击右键,选择indiret list

和笔记内容(22)
然后显示该行上面有bl 跳转指令,后面后func name,该func就是发生fatal时的function 名字

func1.png

同样的方法,查看第二个非正常值的indirect list,同样的方式可以确认上一级func是msg_send

然后显示该行上面有bl 跳转指令,后面后func name,该func就是发生fatal时的function 名字

继续查看第三个标黄值,确认上一级是msg_send5

和笔记内容(22)
但是该func没有push且返回R14的指令,说明该func在一个func的内部中,继续往上查找push指令,发现上一级func name
和笔记内容(22)
继续确认第4个值,并往上找上一级func

和笔记内容(22)
查找第5个非正常值

第6个非正常值
和笔记内容(22)
和笔记内容(22)
第7个值
和笔记内容(22)
最后得到call back func list为,恢复完成,再详细定位细节即可

和笔记内容(22)
some images couldn’t copy out…

相关文章:

  • 2022-12-23
  • 2021-05-20
  • 2021-05-28
  • 2021-12-19
  • 2021-06-01
  • 2021-12-27
  • 2022-02-16
  • 2021-04-11
猜你喜欢
  • 2021-07-11
  • 2021-06-24
  • 2021-07-04
  • 2021-04-05
  • 2022-12-23
  • 2021-08-12
  • 2022-12-23
相关资源
相似解决方案