일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 보안
- 데이터베이스
- java
- 자바
- django
- JPA
- 스프링
- db
- Python
- 파이썬3
- mysql
- python3
- bytecode
- Spring Boot
- BCI
- node.js
- 안드로이드
- 개발
- 자료구조
- rabbitmq
- ORM
- 디자인 패턴
- Spring
- 파이썬
- 스프링 부트
- 웹 개발
- 웹
- 장고
- HTTP
- 스프링부트
- Today
- Total
목록개발/Java (34)
semtax의 개발 일지
자바 시스템 클래스 들을 ASM으로 변경하는법 아래와 같이 자기가 직접 정의된 클래스 로더를 만들어서 수행하면 된다. 대충 순서는 다음과 같다. ClassLoader와 Class 클래스를 이용해서 변경하려는 클래스를 읽어 옴 setAccessible함수를 이용해서 권한을 수정가능한 상태로 변경함 reflection을 이용해서 ClassLoader.defineClass 을 호출하여 변경하려는 클래스에 접근 접근한 클래스를 변경후 반환 아래는 예제 코드이다. private Class loadClass(byte[] b) { // Override defineClass (as it is protected) and define the class. Class clazz = null; try { ClassLoader ..
1. ASM을 어디에다 쓰는가? 난독화 도구 제작등에도 사용 됨. JIT만들때도 활용이 가능 함. 그 외 기존 class 파일의 바이트 코드 패치를 할때 사용 됨. AspectJ 같은데서도 쓰인다고 함 2. ASM 라이브러리의 전체적인 구조 2-1. 전체 구성 Tree Based API와 Event Based API를 제공함 Tree Based API는 Top-Down으로 자바 바이트 코드를 파싱하여 생성된 AST를 순회하는 방식으로 동작 Event Based API는 순차적으로 바이트코드를 읽어들어서 특정 구문이 발견되었을때(Ex: 클래스 정의, 변수선언 등) 해당 구문이 발생하면 이벤트 핸들러가 실행되는 방식임 2-2. 주요 모듈 org.objectweb.asm : 이벤트 based API를 제공 o..