
안드로이드 smali 코드 분석에 관한 기초 지식
안드로이드 기타/ETC
2023. 8. 18. 16:10
개요smali 코드는 안드로이드 애플리케이션의 Dalvik 가상 머신 코드를 표현한 언어이다. Dalvik VM은 안드로이드 앱의 실행을 위한 가상 머신이며(지금은 ART를 사용한다.), smali는 이 VM에서 동작하는 바이트 코드를 사람이 읽기 쉽고 이해하기 쉬운 형태로 변환하여 나타낸다. 즉, Smali는 Dalvik VM이나 ART(안드로이드 런타임)에서 동작하는 바이트 코드의 어셈블리어로 Java 코드(Java 실행 코드가 들어있는 Dex)를 디컴파일한 결과물이다. 따라서, 안드로이드 앱을 대상으로 내부 동작 조작을 위한 소스코드를 변조할 때 Java 코드를 디컴파일한 산출물인 smali 코드를 수정하게 되며, 이러한 일련의 과정을 "리패키징"이라고 한다. 이번 포스팅에서는 smali 코드 분석..