인코드 : 문자나 메시지를 부호로 변환하는 것. 약속된 일정한 규칙에 따라 문자, 메시지 또는 신호를 부호로 변환하는 것.
디코드 : 인코딩된걸 원본 메시지로 복호화하는 것
컴파일: 소스코드를 기계가 해석 가능한 언어로 변환하는 것
디컴파일: 사람이 읽을 수 있는 고수준 언어로 변환하는 것 예) JADX)
패킹: 압축 알고리즘으로 숨기는 것
언패킹: 패킹된 파일을 복원하는 것
난독화: 소스를 알아볼 수 없도록 배열 구조를 바꾸는 것
복호화: 난독화를 복원하는 것
앱을 보호하는 보안 솔루션은 `난독화`나 `패킹` 등 방식으로 나뉜다.
패킹은 소스코드를 압축하거나 암호화 알고리즘으로 숨기는 방식이다. 기술이 부족한 초보 해커 공격 방어에 효과적이다. 구현과 앱 실행 안정성이 높지만 언패킹되면 소스코드가 그대로 노출된다. iOS용 앱에는 `코드사인` 문제로 적용하지 못한다.
난독화는 소스코드를 알아볼 수 없게 배열 구조를 바꾸는 방식이다.
원래 코드와 기능적으로는 동일한 기능을 수행한다. 안정적인 구현이 어렵지만 해커 입장에서 분석에 많은 시간이 걸린다.
앱 개발 과정 자체에 생긴 취약점을 제거할 수는 없지만 해당 취약점을 알아내기 어렵게 해 공격비용을 높인다.
안드로이드용 앱과 iOS용 앱에 모두 적용된다.
'Android' 카테고리의 다른 글
Deobfuscator Tools (0) | 2020.08.03 |
---|