Code Obfuscation using Java Reflection and Exception in Android

안드로이드 환경에서 클래스 반사와 예외 처리를 이용한 임의 코드 수행 방법 및 코드 은닉 방법

  • Kim, Ji-Yun (Division of Computer Science and Engineering, Hanyang University) ;
  • Go, Nam-Hyeon (Dept. of Computer Information, Korea Polytechnic II College) ;
  • Park, Yong-su (Division of Computer Science and Engineering, Hanyang University)
  • 김지윤 (한양대학교 공과대학 컴퓨터공학부) ;
  • 고남현 (한국폴리텍2대학 컴퓨터정보과) ;
  • 박용수 (한양대학교 공과대학 컴퓨터공학부)
  • Published : 2014.07.16

Abstract

본 논문에서는 안드로이드 환경에서 클래스 반사(Reflection)과 예외처리를 이용하여 안드로이드 보호 시스템을 우회하여 임의의 코드를 수행할 수 있는 방법을 제시한다. 일반적인 자바 환경과는 달리 안드로이드 환경에서는 보안 강화를 위해 APK 파일 내 루트 디렉토리의 클래스 파일만을 반사를 통해 동적 로딩이 가능하다. 하지만, 본 논문에서는 클래스 반사와 예외 처리를 이용하여 임의의 디렉토리 내 파일을 로딩 및 동적 실행할 수 있는 방법을 보이며 이 방법은 저자가 알기로는 기존에 알려지지 않은 방법이다. 이를 기반으로, 본 논문에서는 AES 암호와 동적 로딩을 이용하여, 모바일 어플리케이션의 내부 코드를 은폐하는 기법을 제안한다. 제안기법을 활용 시, 첫째 공격자의 입장에서는 내부 코드를 은폐하여 백신을 우회하는 악성코드 제작이 가능하고, 둘째, 프로그램 제작자의 입장에서는 핵심 알고리즘을 은폐하여 저작권을 보호하는 코드 제작이 가능하다. 안드로이드 버전 4.4.2(Kitkat)에서 프로토타입을 구현하여 제안 기법의 실효성을 보였다.

Keywords