소스 코드와 개발 노하우를 보호하고 디컴파일링에 강력하게 대응하는 방법을 자세하게 소개한다.
내가 만든 소스 코드를 지키려면 먼저 상대가 어떻게 뚫고 들어오는지를 알아야 한다.
안드로이드 애플리케이션 소스 코드가 어떻게 파괴되는지 그리고 어떻게 하면 막을 수 있는지 알아본다.
안드로이드 애플리케이션은 모바일 기기에서 동작하며 쉽게 접근이 가능하고 역공학을 통해서 원래의 소스 코드를 알아내는 것도 쉽다. 디컴파일이라는 것은 기계어 형태의 코드를 사람이 읽을 수 있는 형태로 변환하는 과정이다. 실행 파일이나 자바 클래스 파일, DLL 파일 등을 디컴파일하게 되면 원래의 소스 코드와는 사뭇 다른 형태의 코드를 얻을 수 있다. 이 코드는 비록 불완전하고 읽기에도 쉽지는 않지만 그래도 기계어에 비하면 원래의 코드를 알아내는데 훨씬 더 수월한 편이다.
이 책 디컴파일링 안드로이드에서는 다른 일반적인 출판물에서는 쉽게 볼 수도 없으며 다루지 못하고 있는 내용을 설명하고 있다. 원래의 소스 코드를 얻어내기 위해서 노력하는 많은 사람들이 사용하는 도구나 기법을 재조명하고 이들부터 개발자가 힘들여 만든 안드로이드 애플리케이션의 코드를 보호할 수 있는 난독화와 같은 기법을 아울러 설명하고 있다.
디컴파일링 안드로이드는 일반적인 안드로이드 프로그래밍 가이드북이 아니다. 일반적으로 프로그래밍 책은 개발자의 아이디어를 어떻게 소스 코드로 구현하는지 설명하지만 이 책은 정 반대이다. 이 책을 통해서 안드로이드 옵코드(opcode)들을 원래의 소스 코드로 변환하고, 이를 통해서 프로그램을 개발한 사람이 어떤 생각을 가지고 있었는지 추측하게 된다. 따라서 언어 구조를 구체적으로 다루는 대신 DVM과 옵코드에 관련된 내용 위주로 자세히 설명하고 있다. 이 책에서 중요한 것은 언어의 문법이 아니라 저수준에서 가상 머신이 어떻게 동작하느냐이다.
결론적으로 저자는 이 책을 통해 많은 개발자들이 힘들게 만든 안드로이드 애플리케이션을 소중하게 생각하고 스스로를 어떻게 하면 지킬 수 있는지 그 길을 제시하고 있다.
이 책을 통해 배울 수 있는 것들
- 안드로이드 애플리케이션을 디컴파일하고 보호하는 도구 및 기법
- 잠재적인 보안 위협을 진단하고 피할 수 있는 팁
- JVM과 Dalvik VM의 차이점에 대한 분석
- 안드로이드 디컴파일러 및 난독화 도구를 만드는 자세한 방법
- 자바 바이트 코드와 옵코드에 대한 이해가 쉬우면서도 자세한 설명
- DEX 파일과 옵코드에 대한 구조를 설명하고, 자바 클래스 파일과의 차이점을 비교
- 안드로이드 APK 파일을 디컴파일하는 다양한 예제
ㆍ지은이 가드프리 놀란 (Godfrey Nolan)
MI, Southfield의 RISS LLC 창립자인 동시에 회장이다. 소프트웨어 개발 팀에서 20년 이상 일한 경험을 가지고 있다. Ireland Dublin에서 태어났으며 University College Dublin에서 기계공학을 전공하고 West of England 대학에서 컴퓨터 과학 석사를 마쳤다. 또한 2004년 Apress에서 출판된 Decompiling Java의 저자이기도 하다.
<<Decompiling Java>>
독자의견 남기기