Android 上的 Java 字节码注入(inject)

标签 java android jvm dalvik

我意识到这是不可能的,因为 Android 没有 JVM,但是否有解决此问题的方法?我需要为 Android 应用程序执行字节码注入(inject)操作。有什么建议吗?

最佳答案

您不能直接将字节码注入(inject)到已经加载的类/方法中。但是,你可以动态创建新类,将它们写入一个dex文件,然后动态加载它们

参见 this blog发布有关从磁盘上的 dex 文件动态加载类的更多信息。

为了动态创建一个新的 dex 文件,您可能会考虑使用 dexlib component那是 smali/baksmali 的一部分代码库,这是一个用于读取/写入 dex 文件的通用库。

或者,您可以在您的应用程序中包含 smali 并以 smali 汇编格式生成您的类,然后直接使用 smali 将它们组装成一个新的 dex 文件。

关于Android 上的 Java 字节码注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221220/

相关文章:

python - LLVM、Parrot、JVM、PyPy + python

java - JayDeBeApi 连接崩溃

java - InterstitialAd的构造函数

java - 如何使用 AWS CDK for Java 为账户创建 IAM 委托(delegate)人?

android - 如何编写监控收入短信并在 Toast 中显示的广播接收器

Android 游戏 Activity 流程 - 回到开始

java - "the memory requested by JVM from the OS has to be contiguous"是什么意思?

Java,比较3个整数,排列最大,中值和最小

java - JFace TableViewer - 为表格中的所有单元格设置字体颜色

java - jaxb 解码子 @XmlIDREF