바이트 코드 조작
바이트 코드 조작
라이브러리
조작 예제
public class Moja {
public String pullOut() {
return "";
}
}
자바 에이전트
소개
실습
바이트 코드 조작 활용
Last updated
public class Moja {
public String pullOut() {
return "";
}
}
Last updated
try {
new ByteBuddy.redefine(Moja.class)
.method(named("pullOut")).intercept(FixedValue.value("Rabbit"))
.make().saveIn(new File("/User/workspace/example/target/classes/"));
} catch (IOException e) {
e.printStackTrace();
}public class MasulsaAgent {
public static void premain(String agentArgs, Instrumentation inst) {
new AgentBuilder.Default()
.type(ElementMatchers.any())
.transform((builder, typeDescription, classLoader, javaModule)
-> builder.method(named("pullOut")).intercept(FixedValue.value("Rabbit!")))
.installOn(inst);
}
}tasks.named('jar') {
manifest {
attributes(
'Premain-Class' : "com.java.agent.MasulsaAgent",
'Can-Redefine-Classes' : true,
'Can-Retransform-Classes' : true)
}
}java -javaagent:agent.jar -jar application.jar