안드로이드용 앱을 개발할 때 보통 Java를 사용한다. Java는 원래부터 디컴파일이 가능한 언어이다. C와 같은 다른 언어는 컴파일하면, 디컴파일하여 소스코드를 알아낼 수 없다. 따라서 C로 개발된 소프트웨어는 컴파일하여 exe, dll 형태로 배포되어도 소스코드 유출을 걱정할필요가 없다. 하지만 Java는 이와 반대이다. Java는 컴파일해도 기계코드가 아닌 중간 형태의 바이트코드(Byte code)이기 때문에 이것을디컴파일하면 쉽게 소스코드를 알아낼 수 있다.
안드로이드 앱도 마찬가지 보안 문제가 생겨난다. 역시 java로 개발되기 때문이다. 그래서 보통 안드로이드 앱 개발자들은 Proguard라고하는 오픈소스 난독화 도구를 사용한다. Proguard도 계속해서 업그레이드되고는 있지만 보안 도구라고 하기에는 난독화 정도가 약하다. 예를 들어 설명하자면 변수명이나 함수명을 어렵게 바꾸는 수준에 머문다. 난독화이기는 하지만 그리 어렵지 않은 난독화인 것이다.
이보다 더 높은 수준의 난독화를 하기 위해서는 상용 난독화 도구를 사용할 수 있다. 암호화 회사로 유명한 미국 세이프넷사의 ‘안드로이드엔브(AndroidEnv)’에 대해 알아보자. 안드로이드 엔브(Android Env)는 ‘Android Envelope’의 축약어로, 세이프넷이 이미 30년간 업계에서선두를 지켜온 윈도, 리눅스 용 난독화 기술인 엔빌롭(Envelope) 기술을 사용하고 있다.
안드로이드 앱을 개발할때 디컴파일하면 소스를 다 파악할 수 있거나 프로가드를 통해 쉬운 수준의 난독화를 하는데 좋은 도구 이지만 상용이기에 프로가드도 이처럼 빨리 업데이트 됐으면 바람.
'Android' 카테고리의 다른 글
MenuDrawer 라이브러리 (0) | 2014.05.23 |
---|---|
쌓여있는 액티비티 모두 지우기 (0) | 2014.01.21 |
안드로이드 구글맵 (0) | 2013.08.01 |
안드로이드/Android 픽셀(pixel), 디피(dp) 계산법 ~! (0) | 2013.03.28 |
안드로이드/Android 해상도 관련 API 모음 (단말 가로/세로 해상도, Density, dp -> px, px-> dp) (0) | 2013.03.28 |