android - Android的dex代码自动转换

标签 android dalvik dex smali

我想转换/检测 Dex 文件。转换的目标包括测量代码覆盖率。请注意,源文件不可用。因此检测 Dex 是唯一的选择。

我想知道是否有任何现有代码库可以作为示例来编写工具来实现我的目标。

我知道 Smali 项目和许多其他基于 Smali 的项目。但是,这些项目都不是我的目的的好例子。

我正在寻找自动转换 smali 代码或 dexlib 表示的代码,从中生成 smali。出于我的目的,后一个选项是首选,因为可以避免生成 smali 的开销。

最佳答案

代码很多,但是dx的DexMerger是一个转换 dex 文件的示例程序。它需要猜测输出的大小才能使前向引用起作用,这使得它变得相当复杂。

您还需要创建基础设施来重写 dalvik 指令。 DexMerger 的 InstructionTransformer进行浅层重写:调整从一个映射到另一个映射的偏移量。要衡量代码覆盖率,您的指令重写可能需要更加复杂。

关于android - Android的dex代码自动转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984473/

相关文章:

android - malloc 和 dlmalloc 之间的区别

android - 用 D8 编译

android - Android Studio 3.0 Beta4 上的 Dex 错误

java - 在应用程序中动态更改布局

java - 从 Eclipse 的模拟器控制返回不准确的值

android - Galaxy Tab 3 奇怪的崩溃

java - JADX输出反编译错误: "Code decompiled incorrectly, please refer to instructions dump."

java - Android Studio - 权重总和

android - 如何实现一对一消息分发的MQTT

java - MonitorEnter操作是否耗时?