-
Android App에서 Memory Corruption Exploit이 불가능한 이유Mobile/Android 2019. 9. 21. 21:06
[ 안드로이드 시스템 아키텍처 ]
위 그림은 Android System을 나타낸다.
일반적으로 사용하는 App들은 DalvikVM 내부에서 SmaliCode가 해석되어 실행된다.
[1] DalvikVM은 Register-based System이라는 특징을 가지고 있다.
약 64,000개의 레지스터가 있으며, 이 중 16개 또는 256개만 사용하는게 일반적이다.
따라서, DalvikVM에는 Stack이라는 개념이 없고 이 때문에 Stack-based Buffer Overflow가 발생하지 않는다.
다르게 해석하면, DalvikVM이 아닌 Native Code(JNI)에서는 Stack-based Buffer Overflow가 발생할 수 있다.
[2] Java에는 Array Layout Check기능이 기본으로 적용되어 있다.
따라서, Stack에서 Memory Corruption이 발생하면 java.lang.StackOverFlowError로 예외처리 되며,
Heap에서 Memory Corruption이 발생하면 java.lang.OutOfMemoryError로 예외처리 된다.
'Mobile > Android' 카테고리의 다른 글
Unity기반(mono) 게임 App 분석 (0) 2019.12.07 Unity기반(il2) 게임 App 분석 (1) 2019.11.24 Android Hacker's Handbook_2장 [정리 및 번역] (3) 2019.09.21 Android URL Scheme (0) 2019.08.11 Nexus 6P Rooting [TWRP/Magisk] (0) 2019.08.08 댓글