Security/Reversing

Reversing Study - day 2(레지스터)

bonggang 2019. 11. 9. 15:29

레지스터란?

CPU 내부에 존재하는 다목적 공간. CPU 내에서 처리할 명령어나 연산에 사용할 값이나 연산 결과를 일시적으로 기억하는 장치

 

다양한 종류의 레지스터*가 존재하지만 지금은 리버싱 기초를 위한 레지스터들만 먼저 정리해두겠다.

 

범용 레지스터(General Purpose Registers)

상수/주소 등을 저장할 때 주로 사용되는 레지스터로 특정 어셈블리 명령어에서는 특정 레지스터를 조작하기도 한다.

- EAX: Extended Accumulator Register, 일반적으로 함수 리턴 값에 사용

- EBX: Extended Base Register

- ECX: Extended Counter Register, 반복문 명령어에서 반복 카운트로 사용

- EDX: Extended Data Register

- EBP: Extended Base Pointer, 하나의 스택 프레임의 시작 지점 주소 저장

- ESI: Extended Source Index

- EDI: Extended Destination Index

- ESP: Extended Stack pointer

 

세그먼트 레지스터(Segment Register)

- CS: Code Segment, 코드가 존재한는 세그먼트 오프셋 저장

- SS: Stack Segment, 프로그램에 사용되는 데이터가 존재하는 세그먼트 오프셋 저장

- DS: Data Segment, 스택이 존재하는 세그먼트 오프셋 저장

- ES: Extra Segment

- FS: Data Segment

- GS: Data Segment

 

명령 포인터(Instruction Pointer)

- EIP: Extended Instruction Pointer, 다음에 실행해야 할 명령어가 존재하는 메모리 주소 저장

 


컴퓨터 레지스터(프로세서마다 다르게 정의되고 호칭됨)

- 범용 레지스터, 프로그램 카운터(다음 인출할 명령어 주소를 임시 저장), 명령어 레지스터(가장 최근 인출된 명령어를 임시 저장), 데이터 레지스터, 주소 레지스터, 입출력 레지스터 등

참고: http://www.ktword.co.kr/word/abbr_view.php?m_temp1=5269