开发者

What is Java bytecode injection?

开发者 https://www.devze.com 2023-01-11 13:50 出处:网络
What exactly is Java开发者_JS百科 bytecode injection and why would one use it?Java code compiles into bytecode (Foo.java ->> Foo.class).Bytecode injection is modifying Foo.classat runtime to inj

What exactly is Java开发者_JS百科 bytecode injection and why would one use it?


Java code compiles into bytecode (Foo.java ->> Foo.class). Bytecode injection is modifying Foo.classat runtime to inject code into it right before its loaded and run.

Imagine a scenario where I want to find out how many times method

public void bar();

is invoked in Foo.class. I could write an agent using java.lang.instrument that intercepts Foo.class during class load, modifies it using ASM so that bar() calls com.amir.agent.incrementCount() on method entry.

Now I can run my program:

$java -javagent:MyAgent Foo  //assuming Foo has a main() defined

and at runtime, Foo.class will not only do its normal work, it will also do work I defined in MyAgent each time bar() is invoked.

For a pointer on writing an agent from scratch, start here.


First google search gives an interesting read Java Programming: Bytecode Injection

0

精彩评论

暂无评论...
验证码 换一张
取 消