-
IA-32 Register 기본 설명(3/3)IT/리버싱 핵심원리 2017. 11. 23. 14:40
공부를 시작하기에 앞서 본 글은 '리버싱핵심원리', 이승원 저자, 인사이트 를 참고했음을 밝힙니다.
또한 공부하는 입장에서 정리를 목적으로 작성하였기때문에 틀린 정보가 있을수도 있다는 것을 알려드립니다.
관련 글
2. Basic program execution registers
- General Purpose Registers(32비트 - 8개)
- Segment Registers(16비트 - 6개)
- Program Status and Control Register(32비트 - 1개)
- Instruction Pointer(32비트 - 1개)
2.3 Program Status and Control Register(프로그램 상태와 컨트롤 레지스터)
- EFLAGS : Flag Register
- 플래그(Flag) 레지스터의 이름은 EFLAGS이며 32비트(4바이트) 크기이다.
- 각 비트는 1 또는 0의 값을 가지는데, 이는 On/Off 혹은 True/False를 의미한다.
- 일부 비트는 시스템에서 직접 세팅하고, 일부 비트는 프로그램에서 사용된 명령의 수행 결과에 따라 세팅된다.
◈ Zero Flag(ZF)
- 연산 명령 후에 결과 값이 0이 되면 ZF가 1(True)로 세팅된다.
◈ Overflow Flag(OF)
- 부호 있는 수(Signed integer)의 오버플로가 발생했을 때 1로 세팅된다. 그리고 MSB(Most Significant Bit)가 변경되었을 때 1로 세팅된다.
◈ Carry Flag(CF)
- 부호 없는 수(unsigned integer)의 오버플로가 발생했을 때 1로 세팅된다.
2.4 Instruction Pointer
- EIP : Instruction pointer
- Instruction Pointer는 CPU가 처리할 명령어의 주소를 나타내는 레지스터이다.
- 크기는 32비트(4바이트)이다.
- CPU는 EIP에 저장된 메모리 주소의 명령어(instruction)를 하나 처리하고 난 후 자동으로 그 명령어 길이만큼 EIP를 증가시킨다.
- EIP를 변경하고 싶을 때는 특정 명령어(JMP, Jcc, CALL, RET)를 사용하거나 인터럽트(interrupt), 예외(exception)를 발생시켜야 한다.
도움이 되셨다면 아래
공감 버튼 한번씩 눌러주세요.^^
'IT > 리버싱 핵심원리' 카테고리의 다른 글
스택 프레임(Stack Frame) 실습 - stackframe.exe (0) 2017.11.23 스택 프레임(Stack Frame) 에 대해 알아보자 (0) 2017.11.23 스택(Stack) 이란 무엇인가? (0) 2017.11.23 IA-32 Register 기본 설명(2/3) (0) 2017.11.23 IA-32 Register 기본 설명(1/3) (0) 2017.11.23 댓글