리버싱/ARM

Exception Level 변경

cyanhe_wh 2021. 2. 9. 21:06
728x90
반응형

익셉션 레벨이 변경되면 코드 흐름권한도 변경되므로 정확한 변경 조건과 과정을 파악하는 것이 중요하다!!

 

익셉션이 발생하면 같은 익셉션 레벨이나 높은 익셉션 레벨로 이동한다.

EL0에서 EL1으로 이동하는 것처럼 높은 익셉션 레벨로 변경하면 소프트웨어 실행 권한도 상승한다.

의도하지 않은 권한 상승이 발생하면 안되기 때문에 익셉션이 발생한 레벨보다 낮은 레벨에서는 익셉션을 받을 수 없다.

특히 EL0는 익셉션 핸들링이 불가능하므로 EL0에서 발생한 익셉션은 EL1 이상의 레벨에서 핸들링해야 한다.

 

Exception 발생 상황

  • IRQ와 FIQ 인터럽트 시그널
  • 메모리 시스템 abort
  • 정의되지 않은(undefined) 인스트럭션 실행
  • 시스템 콜
  • 보안 모니터나 하이퍼바이저 트랩

익셉션 핸들링이 끝나고 이전 실행 코드로 복귀할 때명시적으로 ERET 인스트럭션을 사용해야한다.

익셉션 복귀 시에는 익셉션 발생과 반대로 동일한 익셉션 레벨이나 낮은 익셉션 레벨로 이동한다.

보안 상태는 익셉션 레벨이 변경될 때 함께 변경된다.

 

728x90
반응형

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

실행 상태 변경  (0) 2021.02.09
실행 상태  (0) 2021.02.09
ARMv8 Exception Model  (0) 2021.02.09
ARMv8  (0) 2021.02.09
ARM Assembly  (0) 2021.02.09