IT/Security
바이트 코드 혼란 기법 대응
Hotman
2013. 9. 16. 17:58
쉽게 디컴파일 되는 자바 바이트 코드를 해석하기 어렵게 하기 위한 방법으로 다음과 같은 방법이 있다.
- 의미 있는 클래스, 메소드, 멤버 변수명을 a,b,c, 등 의미없는 표현으로 치환
- 아이템의 이름을 new 나 int 와 같은 자바 키워드로 치환
- 디버깅 정보, 메타 정보들을 바이트코드에서 제거
- 여러 종류의 불필요한 코드 첨가
- 스택 추적을 사용하여 코드를 통해 수행되는 경로가 매우 꼬여있게 만든다.
- 접근할 수 있는 문장이나 반환문이 없는 코드 경로 등 허용되지 않는 프로그래밍 방식 사용
위와 같은 기법에 대한 대응 기법
- 공용 메소드를 위한 애플릿은 소스를 완전히 이해햐지 않고도 검토 가능.
자바스크립트에서 직접 호출할 수 있는 메소드가 무엇인지, 특성은 무엇인지를 통해 여러가지 입력 값을 제시해서 이들 메소드의 행동을 살펴본다
- 클래스, 메소드와 멤버 변수명이 의미없는 표현으로 치환된 경우 많은 IDE 도구에 내장되어 있는 요소 재구성
(refactoring) 기능을 사용해 코드의 이해를 도울 수 있음.
(rename 도구 등)
- 변형된 바이트코드를 변형 도구로 적절한 옵션 값ㅇ르 줘서 다시 처리하면 많은 변형 내용이 제거될 수 있음
-> jode