android上的Java字节码注入

android上的Java字节码注入,java,android,jvm,dalvik,Java,Android,Jvm,Dalvik,我意识到这是不可能的,因为Android没有JVM,但是有解决这个问题的方法吗?我需要为Android应用程序执行字节码注入操作。有什么建议吗?您不能直接将字节码注入已加载的类/方法中。但是,您可以动态创建新类,将它们写入dex文件,然后动态加载它们 有关从磁盘上的dex文件动态加载类的更多信息,请参阅post 为了动态创建一个新的dex文件,您可以考虑使用代码库的一部分,它是一个用于读取/写入dex文件的通用库 或者,您也可以在应用程序中包含smali,并以smali汇编格式生成类,然后直接使

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

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

有关从磁盘上的dex文件动态加载类的更多信息,请参阅post

为了动态创建一个新的dex文件,您可以考虑使用代码库的一部分,它是一个用于读取/写入dex文件的通用库


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

在Android中可以进行代码注入,请查看Github上托管的项目

Disabler允许在现有项目中使用代码注入动态优化、跟踪和修改Android项目。代码是动态注入的,无需修改旧功能来添加日志记录/分析或禁用流的一部分

该工具的主要功能:

  • 跟踪:进入/退出方法,收集参数和退出值)
  • 概要:测量方法调用的频率和持续时间
  • 禁用:通过覆盖用户定义的方法返回的值来禁用/跳过部分程序流
  • 延迟:在代码的某些部分引入延迟(即,对于某些包)

  • 在引擎盖下,它使用AspectJEclipse构建机制(javacajc取代)

    您想在运行时还是编译时注入

    对于编译时,有几种非常成熟的解决方案用于处理java源代码/字节码—ASM、java assist等

    专门针对android,请尝试ASMDEX


    你检查过这个吗?还有。@Hi,我如何使用这个项目?你有没有托管过任何示例?是的,请看这里:另外,请看一下演讲-这里有很多示例:您好,但是您支持dex格式的android应用程序动态代码注入吗?我是说没有源代码的应用程序。例如,我正在运行一个应用程序,并试图为测试目的注入我自己的类?