BCEL로 런타임에 Arguments(매개변수들) 캡쳐하는 Instruction 추가하기.
·
Study/BCI&BCEL&ASM
Bcel 을 처음 다룰 당시에 만들었던 간단한 매개변수 출력하는 BCEL transform이다. 상당히 다듬어지지않은 막코드라서 감안해서 볼 필요가있다. 핵심부분은 밑줄과 주석을 달겠다. 이전글(http://blog.sanguneo.com/21) 에서 premain 을 이용한 javaagent 사용법은 간략하게 배웠는데. BCEL을 여기에 접목시킨다는것은 조금 고차원적인 접근이 필요하다.(필자의 생각) 우선적으로 소스를 펼치기에 앞서 이론설명을 하자면 자바의 .class 파일은 완전하계 기계어(?)로 번역된것이 아닌, 그렇다고 소스형태도아닌 그 중간어딘가의 형태로 볼수있다. javac 명령어를 실행하면 소스파일을 java컴파일하면 class 파일로 뱉어내게되는데, 이 class파일이 ByteCode의 목..
BCEL 중요용어 및 사용법 간단 소개.
·
Study/BCI&BCEL&ASM
Field // 변수와 비슷한, 저장공간 등의 개념으로 볼 수 있다. LocalVariable // 메소드의 지역변수를 나타내며, 메소드 프레임 내의 스코프, 이름, 시그네쳐, 인덱스를 포함한다. Attribute // 상수값, 소스파일, 코드, Exceptiontable, LineNumberTable, LocalVariableTable, InnerClasses 등이 있음. ConstantPool // 클래스나 인터페이스의 이름, 필드명 등의 클래스파일 구조와 서브구조로부터 참조가능한 모든 상수를 담고있는 구조. Instruction(~= Byte Code) // 자바 바이트코드로 되어있는 절차. InstructionFactory // 컴파일러의 뒷단에서 바이트코드를 생성하는 것 이라고 되어있으며 Ins..
bcel 6 다운로드
·
Study/BCI&BCEL&ASM
최신 개발버전 스냅샷 위치는 다음과같음http://repository.apache.org/content/groups/snapshots/org/apache/bcel/bcel/6.0-SNAPSHOT/
BCI 기술과 BCEL
·
Study/BCI&BCEL&ASM
BCI(Byte Code Instrumentation) 란 *.class 와 같이 바이트코드로 컴파일된 자바 클래스파일을 수정하고 다루는 도구 혹은 기술이다. 자바는 javac 로 컴파일할때 완전한 기계어 코드가 아닌 소스와의 중간형태인 Byte Code 로 생성하게되는데 이게 도움을 받으면 어느정도 읽고 수정할수 있다. 자바에서도 클래스파일을 다루는 법을 제공하며 응용 라이브러리로는 Apache Commons 의 BCEL ( 정식 5.2, 개발버전 6.0)Object Web 의 ASMJBOSS 의 JavaAssist 등이 있고 본 블로그에서는 APACHE의 BCEL을 주로 다룰 예정이다. 필자가 다루고있는 라이브러리는 BCEL (Byte Code Engineering Library) 인데 이름만큼이나 ..
ASM 으로 바이트코드 변경하기.
·
Study/BCI&BCEL&ASM
http://ukja.tistory.com/27ASM 에 대한 정리가 잘 되어있다.