在Android Junit测试用例中的字节码注入

时间:2014-08-12 11:17:51

标签: android bytecode dalvik code-injection

我编写了一个小的java代理,它在类加载时执行字节码注入,它通过添加vm参数-javaagent path-to-agent-jar在独立的Java应用程序上正常工作。

我的要求是应用相同的java代理来检测android应用程序代码。 我必须在Android应用程序中进行一些字节码注入,同时通过Junit测试代码。

我的问题是,在dalvik vm中,检测机制的工作原理与普通java vm的工作方式相同吗?

如果是,那么我想知道为什么它在我的Junit测试用例中不起作用。请注意,我的测试类从android Junit框架扩展了ActivityInstrumentationTestCase2。

如果不是,我可以通过什么方式实现这一目标?如何在运行时在dex文件中注入代码?

2 个答案:

答案 0 :(得分:1)

我使用Aspectj成功完成了该要求。 如果有人最终遇到类似的问题,你可以按照以下精彩的博客来帮助我。

https://deansserver.co.uk/~dean/2011/07/18/aspect-oriented-android-development-tool-integration/

答案 1 :(得分:0)

没有

javaagent是Oracle JVM 1.5中引入的技术。它不存在于dalvik。

但您可以将工具更改为离线,请尝试ASM / ASMDEX(http://asm.ow2.org / http://asm.ow2.org/asmdex-index.html)。