ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ARM 공부
    Hack/Pwnable 2015. 7. 4. 08:49

    ARM프로세스의 6개 특권모드 1개의 일반모드가 있다.

    프로세스 모드는 어떤 권한을 가지고 동작하는지를 나타낸다.

    User 모드: 일반 유저 앱을 수행할때 프로세서 동작모드

    System 모드: User모드와 동일한 레지스터를 사용하지만 CPSR을 완전히 읽고 쓸수있는 특수모드 (Current Porgram Status Register)

    FIQ모드: 빠른 인터럽트 처리를 위한 프로세서 동작모드
    IRQ 모드: 일반적으로 사용되는 인터럽트를 처리하기위한 프로세서 동작모드
    SVC모드: 일반적으로 운영체제 커널이 동작하는 모드로, 리셋이나 소프트웨어 인터럽트가 발생하는 경우의 프로세서 동작모드
    Abort모드: 메모리 접근이 실패한경우의 동작모드
    Undefined모드: 프로세서가 정의되지않은 명령을 수행하려할때 수행되는 동작모드

    ARM은 37개의 레지스터중에 특정모드를 사용하면 18개를 활성화 시킬수있고, 16개의 데이터 레지스터와 2개의 프로그램 상태 레지스터로 구성된다.

    데이터 레지스터 -> r0 ~ r15( r13,r14,15는 특수한 기능을위해 할당)

    r13: 스택포인터(sp)로 사용, 프로세서 모드의 스택 맨위 주소값을 저장
    r14:링크 레지스터(lr)로 사용, 서브루틴을 호출할때의 복귀주소 저장
    r15: 프로그래 카운터(pc)로 프로세서가 읽어들인 명령어의 그 다음 명령어 주소를 저장

    프로그램 상태 레지스터

    CPSR, SPSR(Saved Porgram Status Register)

    Bank Register 

    • 모드에 따라 숨겨져있는 레지스터가 각각 활성화 되는것
    CPSR은 프로그램이 수행될때의 상태를 나타낸다.(조건 비트를 저장하는 사용됨)
    비트는 산술 및 논리연산의 결과를 저장해 조건분기 명령의 조건을 표시해놓는다

    플래그,상태,확장,제어 부분으로 구성된다.

    SPSR은 프로세스가 특권모드로 들어갈떄 CPSR을 저장하기위해 사용된다.
    프로세서가 사용자모드로 복귀하면 저장된 SPSR로부터 이전 CPSR상태를 복구할수이있고, 특권 모드에서 특권모드로 갈때 SPSR을 범용 레지스터에 복사하여 저장해놓는다.


    'Hack > Pwnable' 카테고리의 다른 글

    printf disassembly  (0) 2015.07.12
    Use After Free  (0) 2015.07.08
    Memory Leak  (0) 2015.06.27
    Windows BOF  (0) 2015.06.25
    stack canary for gcc  (0) 2015.06.24

    댓글

Designed by Tistory.