배열 재구성을 통한 자바 소스 난독화 기법

본 논문은 자바 소스 코드에서 배열을 재구성하고, 재구성된 배열을 캡슐화한 클래스를 자동 생성함으로써 난독화를 구현하는 JDATATRANS 도구를 제안한다. 배열 분할·병합·접기·평탄화와 인덱스 변환, 상수 은닉 기법을 결합해 코드 가독성을 크게 낮추고, 실행 오버헤드와 파일 크기 증가를 정량적으로 평가한다.

저자: Praveen Sivadasan, P. Sojan Lal

배열 재구성을 통한 자바 소스 난독화 기법
본 논문은 자바 소스 코드 수준에서 배열을 중심으로 한 난독화 기법을 제안하고, 이를 자동화하는 도구 JDATATRANS를 구현한다. 연구 배경으로는 자바 바이트코드가 원본 소스의 대부분 정보를 보존하고, JIT 컴파일러가 실행 시점에 바이트코드를 해석하기 때문에 역공학자가 소스 수준으로 복원하기가 비교적 쉬운 점을 들었다. 기존 연구에서는 제어 흐름 변형, 변수 이름 난독화 등 다양한 방법이 제시됐지만, 배열과 같은 데이터 구조에 대한 구조적 변형은 상대적으로 적게 다루어졌다. 저자는 배열 재구성 연산을 네 가지 기본 형태로 정의한다. 첫째, ‘배열 분할(split)’은 원본 1차원 배열을 짝수 인덱스와 홀수 인덱스로 나누어 두 개의 서브 배열에 저장한다. 둘째, ‘배열 병합(merge)’은 두 개의 1차원 배열을 하나로 합치는 방식이며, 셋째 ‘배열 접기(fold)’는 1차원 배열을 2차원 형태로 재배열한다. 넷째 ‘배열 평탄화(flatten)’는 2차원 배열을 다시 1차원으로 변환한다. 이러한 변환은 배열의 차원, 인덱스 계산식, 이름 등을 동시에 변경함으로써 원본 구조를 감추는 효과가 있다. 구현 측면에서는 각 변환에 대응하는 클래스를 정의한다. 예를 들어 SplitArray_Integer 클래스는 내부에 두 개의 int

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기