매개 변수 defineClass가 호출되어 있는지 확인하고 defineClass를 호출하기 전에 바이트 배열 매개 변수에 메서드를 변환하는 바이트 코드를 호출합니다.변형시키는 호출 방법은 확실 동적으로로드 된 클래스 내 수업 변압기를 통해 실행되는 만들려고 노력하고 그것이 내가 뭘하려고 오전 클래스</p> <p>에로드되기 전에 내가 바이트 코드를 수정해야 그렇게하기 위해서입니다
그러나 각 매개 변수가 시작되는 위치를 식별 할 수 없지만 명확한 순서로되어 있습니다. 어떤 매개 변수가 시작되는지 알 수 있습니까?
여기 예는 나는 ASMifier
//The first parameter
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
//second parameter, byte array, this is what I am looking for!!
mv.visitVarInsn(ALOAD, 4);
//third parameter
mv.visitInsn(ICONST_0);
//fourth parameter
mv.visitVarInsn(ALOAD, 4);
mv.visitInsn(ARRAYLENGTH);
//fifth parameter
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Class", "getProtectionDomain", "()Ljava/security/ProtectionDomain;");
mv.visitMethodInsn(INVOKEVIRTUAL, "b", "defineClass", "(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;");
로 만든 어떻게 내 변압기 사용을 통해 그것을 실행하기 위해 매개 변수로 defineClass는 주어진되고있는 바이트 배열을로드하고 그 지시하는 I detact 반환 값은?
나는 매개 변수 사이의 명확한 분리를 볼 수 없습니다, 나는이에 대한 모든 문서를 찾을 수 없습니다 ..
을 매개 변수가 끝날 때 나는 JVM 때 매개 변수의 시작과 노하우도 이해하지 않는 ..
바이트 배열 매개 변수 인덱스는 무엇인지 쉽게 추출 할 수 있지만 바이트 배열을로드하는 바이트 코드를 찾을 수 있다는 것을 아는 방법은 무엇입니까?
바퀴를 새롭게 단장했습니다. ⟨[Instrumentation API] (http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html)⟩ 이미 사용하기 전에 모든 클래스를 변형 할 수있는 방법을 제공합니다. – Holger