리버싱/ARM

ARMv8 Exception Model

cyanhe_wh 2021. 2. 9. 17:10
728x90
반응형

프로세서를 바라보는 관점익셉션 레벨을 기준으로 변경되었다!!

익셉션은 시스템 흐름에서 벗어나 익셉션 핸들러의 처리를 필요로 하는 상태 또는 시스템 이벤트를 말한다.

 

익셉션 모델익셉션 타입과 상태, 프로세서의 익셉션 핸들링 루틴, 익셉션 복귀 등을 정의한다.

 

ARMv8 익셉션 모델

프로세서는 4개의 익셉션 레벨(EL0, EL1, EL2, EL3) 중 하나의 레벨에서 동작한다.

모든 익셉션 레벨에서 익셉션이 발생할 수 있다!!

익셉션 레벨이 높을수록 자원에 접근할 수 있는 권한 레벨도 높다!!

ARMv7의 특권 레벨(privilege level)이 높을 수록 권한 레벨이 높은 것과 동일한 방식이다.

 

익셉션 레벨은 해당 레벨에서 동작하는 프로그램을 염두에 두고 디자인되었다.

EL0는 유저 애플리케이션

EL1는 커널

EL2는 하이퍼바이저

EL3는 보안 모니터

 

프로세서 동작 상태는 시큐리티 상태에 따라 non-secure 상태(normal 상태)secure 상태로 나눠진다.

 

non-secure 상태에서는 secure 상태의 자원(특히 물리 메모리)에 접근할 수 없다.

non-secure 상태와 secure 상태 사이의 전환EL3가 담당하는데, EL3는 SMC(secure monitor call) 인스트럭션이나 하드웨어 익셉션통해 진입 가능하다.

 

EL2와 EL3는 옵션이므로 프로세서에 포함하지 않을 수도 있다.

따라서 가상화나 하드웨어 시큐리티 기능이 필요하다면 프로세서 선정 시에 EL2, EL3가 포함되었는지 확인해야 한다.

 

시큐리티는 ARM 웹사이트 "Trustzone"과 "Trusted Execution Environment" 문서 참고!!

이 영역은 보통 별도의 펌웨어를 구동시켜 관리하므로 리눅스에 속하지 않지만, 리눅스에서 구동되는 소프트웨어에 시큐리티 서비스를 제공하기 위해 리눅스를 거처야 한다.

 

특별한 언급이 없다면 aarch64와 non-secure 상태에서의 동작을 전제로 한다!!

728x90
반응형

'리버싱 > ARM' 카테고리의 다른 글

실행 상태  (0) 2021.02.09
Exception Level 변경  (0) 2021.02.09
ARMv8  (0) 2021.02.09
ARM Assembly  (0) 2021.02.09
ARM 크로스 컴파일러 및 실행  (0) 2021.02.01