티스토리 뷰
코드 난독화
프로그램 코드의 일부 또는 전체를 변경하는 방법 중 하나로,
코드의 가독성을 낮춰 *역공학에 대한 대비책을 제공한다.
* 역공학
대부분의 개발자들은 컴파일된 바이너리를 완전한 블랙박스로 취급한다.
보안 취약점 분석가들의 주요 업무는 이런 바이너리 코드를 읽고 보안 취약점을 찾아내는 것이다.
보통 컴파일된 바이너리를 다시 원래의 소스코드로 복구하는 프로그램인 디컴파일러 ( decompiler ) 의 도움을 받는다.
디컴파일러는 원래 소스 코드를 완벽히 복구하지는 못하지만,
어셈블리에 비해서는 훨씬 이해하기 쉬운 프로그래밍 언어의 소스 코드를 생성해준다.
이처럼 바이너리 코드를 분석해 유용한 정보를 뽑아내는 작업을 역공학 ( reverse engineering ) 이라 부른다.
최근 보안 취약점 분석의 상당 부분은 역공학과 관련되어,
윈도우처럼 소스 코드가 공개되지 않은 운영체제나 어플리케이션의 보안 버그를 찾아내는데 적극적으로 활용되고 있다.
난독화를 적용하는 범위에 따라 소스 코드 난독화와 바이너리 난독화로 나눌 수 있다.
소스 코드 난독화는 C/C++/Java 등의 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술이고,
바이너리 난독화는 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술이다.
또한, 난독화의 목적에 따라
각각 기술의 무단복제와 불법으로 침입하려는 프로그램을 방지하는 것으로 나뉘기도 한다.
난독화 원리
필요 이상으로 복잡한, 또는 아무것도 하지 않는 코드를 작성한다.
관련이 없는 여러 함수들을 뒤섞는다.
데이터를 알아보기 힘들게 인코딩한다.
안드로이드 난독화
난독화의 중요성이 커지면서 난독화를 해주는 서비스들이 많아지고 있는데,
그 중 안드로이드 스튜디오에 기본으로 제공하는 Proguard 와 유료버전인 Dexguard 에 대해 알아보자.
유사 많은 난독화 툴이 있지만 많은 것들이 서비스를 제공하는 쪽에 소스를 올리고 난독화된
apk 를 다운로드 받는 방식이라 추천하지 않는다.
자세한 사용법은 여기를 참고.
+ References
https://ko.wikipedia.org/wiki/%EB%82%9C%EB%8F%85%ED%99%94
'프로그래밍 > Android' 카테고리의 다른 글
[Android] do not concatenate text displayed with setText (0) | 2019.01.29 |
---|---|
[Android] Android Studio Debugging (0) | 2019.01.16 |
[Android] Service FLAG (0) | 2019.01.08 |
[Android] 동적 BroadcastReceiver (0) | 2019.01.08 |
[Android] 3.1.0 업데이트 이후 DataBinding 생성 실패 (0) | 2018.07.16 |