android - 是否可以在 Android 应用程序中注入(inject)代码?

标签 android bytecode dalvik bytecode-manipulation

我想在运行时向 android 应用程序中注入(inject)代码。我曾尝试使用 dx 工具在 sdcard 中生成一个 dexfile,但是当我想实例化时,它失败了。是否有任何工具可以注入(inject)生成新的 dalvik 字节码的代码?我正在研究一些图书馆,aspecjt 或 guice for android。使用脚本语言更好吗?

谢谢大家 :)

最佳答案

Dexmaker是新的,专为此而设计。以下是项目网站示例的一部分:

    DexMaker dexMaker = new DexMaker();

    // Generate a HelloWorld class.
    TypeId<?> helloWorld = TypeId.get("LHelloWorld;");
    dexMaker.declare(helloWorld, "HelloWorld.generated", Modifier.PUBLIC, TypeId.OBJECT);
    generateHelloMethod(dexMaker, helloWorld);

    // Create the dex file and load it.
    File outputDir = new File(".");
    ClassLoader loader = dexMaker.generateAndLoad(HelloWorldMaker.class.getClassLoader(),
            outputDir, outputDir);
    Class<?> helloWorldClass = loader.loadClass("HelloWorld");

    // Execute our newly-generated code in-process.
    helloWorldClass.getMethod("hello").invoke(null);

关于android - 是否可以在 Android 应用程序中注入(inject)代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4260231/

相关文章:

android - 如何将 Scala 集成到核心 Android 平台中?

java - 删除列表的最后一个元素在JAVA中不起作用

android - 为什么即使设置了 FLAG_NO_CREATE,PendingIntent 也会触发 onCreate

android - Context.startForegroundService() 仅在 Android 11 Samsung 设备上没有调用 Service.startForeground()

java - 使用 Asm 字节码生成器 (ClassWriter) 生成具有泛型类型的方法

java - 在同一 Dalvik/JVM 中使用不同类加载器实例化的类不能彼此为 "see"

java - 自动过期并删除SQLite数据库中的记录

java - 在 javaagent 中访问 servlet-api

java - 需要帮助来理解 Java 字节码指令

android - Android 2.3 上的弱全局引用不起作用 (JNI)