gpt4 book ai didi

java - Dex debug_info 格式

转载 作者:行者123 更新时间:2023-11-30 10:39:21 25 4
gpt4 key购买 nike

在查看 dex 文件时,我注意到在与每个 code_item 关联的 debug_info_item 中,可能有:

  • DBG_END_LOCAL 没有任何 DBG_START_LOCAL 之前有相同的寄存器
  • DBG_START_LOCAL 用于已定义调试信息名称但尚未关闭的寄存器(尽管这种情况很少发生)

我不明白我应该如何解析这些案例。关于 debug_info_item 格式 ( https://source.android.com/devices/tech/dalvik/dex-format.html ) 有什么我不理解的吗?

另外,为了确定一下,我说得对吗:

  • DBG_START_LOCALDBG_END_LOCAL 指令只为地址范围内的指令定义一个调试名称,而该范围外的跳转 指令会使名称消失,即使指令指针没有通过 DBG_END_LOCAL
  • 指向的地址
  • 一个寄存器只用于一个变量,同一个函数内的同一个寄存器不应该有不同的调试名称

最佳答案

参数寄存器都是隐式本地的,所以你可以有一个 DBG_END_LOCAL 而没有 DBG_START_LOCAL 作为参数寄存器。在“现有”本地的 DBG_START_LOCAL 的情况下,我想你只是隐含地结束以前的本地并开始新的本地。

但请记住,调试信息仅供引用。没有任何东西可以证明它的结构是否正确,甚至是否真的有意义。例如混淆器可以添加无意义的调试信息,而不会导致 dex 文件在使用时无法通过验证。

比如我最近fixed a bug in baksmali与超出该方法范围的寄存器值的开始/结束局部变量相关。

关于java - Dex debug_info 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com