我参与过使用baksmali和 dexpler反汇编 Android 应用程序。每当我反汇编一个应用程序时,我都会发现包和包层次结构(在开发场景中本来可以使用)完好无损。例如,当我反汇编一个任务管理器应用程序(MD5:3377f8527479ab4e72bf9fa5eec62abe)时,我得到如下图所示的包层次结构。.
在这种情况下,我有以下问题,
- 在构建应用程序时,这种 Java 包的层次结构是否会被保留和保留。当然,当我们开发应用程序时,我们会使用许多包,并在构建应用程序时将它们放在一个层次结构中。但是,开发人员编写的所有代码都将转换为单个 classes.dex 文件。包和包层次结构信息是否会保留在这个 classes.dex 文件或 apk 文件的任何其他部分(如 META-INF)中?
- 如果 .dex 中没有此信息,那么此信息从何而来?每个反汇编/反编译工具如何设法提取这个包层次结构?
- 在应用程序构建过程中,在哪里可以找到与包和包层次结构相关的文档/文献?我尝试浏览 Android 文档是徒劳的。