안드로이드 앱은 자바로 이루어 져서 쉽게 디컴파일이 되는데 그걸 막기 위해 보안 솔루션을 사용합니다.
디컴파일을 하여 나온 코드를 보기 힘들게 만들기(난독화,암호화)
1. 이름 난독화
필드 , 메소드 , 클래스의 이름을 의미 없는 이름으로 변경합니다.
ex) setText -> ab() |
2. API 은닉
Java Reflection를 이용합니다.
*Java Reflection : 리플렉션이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말합니다.
Class a = Class.forName("AAClass") |
3. 흐름제어
클래스 속의 메소드 등의 영역을 바꾸거나, 의미 없는 더미 코드를 삽입하여 코드 흐름 파악을 어렵게 한다
//흐름제어 전 a = 0; while(a<20) { a = a+1; } |
//흐름제어 후 a = 0; while(a<20) { a = a+1+10-7+5-8; } |
4. 문자열 암호화
//문자열 암호화 전 TextView example = new TextView(this); example.setText("Test String"); setContentView(example); |
//문자열 암호화 후 TextView example = new TextView(this); example.setText(decrytion("b/$$*")); setContentView(example); |
5. 클래스 암호화
파일 내용 전체를 암호화하여 저장해 두었다가 동적으로 복호화, 클래스 로더로 로딩
'안드로이드에 관하여 > 안드로이드 공부' 카테고리의 다른 글
Where is my arm ? (0) | 2021.01.17 |
---|---|
Android Hackers Handbook 1장 (0) | 2021.01.16 |
what is Smali code? (0) | 2021.01.02 |
Dex 파일 구조는 어떻게 되어 있는가 (2) | 2020.12.24 |
Android framework Study[2 - 핸드폰을 부팅 하자] (0) | 2020.12.03 |