首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dex debug_info格式

Dex debug_info格式
EN

Stack Overflow用户
提问于 2016-09-04 16:33:32
回答 1查看 416关注 0票数 2

在查看dex文件时,我注意到在与每个debug_info_item相关联的code_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指令仅为地址范围内的指令定义调试名称,超出该范围的jump指令将使名称消失,即使指令指针没有通过DBG_END_LOCAL指向的地址
  • 寄存器只用于一个变量,同一函数中的同一个寄存器不应该有不同的调试名称
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-04 18:20:34

参数寄存器都是隐式局部变量,因此可以为参数寄存器使用没有DBG_START_LOCAL的DBG_START_LOCAL。对于用于“现有”本地的DBG_START_LOCAL,我可以想象您只是隐式地结束了前一个本地并启动了新的本地。

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

例如,最近我的修复了巴斯马利的一个窃听器与开始/结束局部变量相关,注册值超出了该方法的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39319126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档