티스토리 뷰

pwnable/정리

CPU 레지스터 정리

ba0bab 2017. 12. 14. 11:55

레지스터 : CPU내부에 존재하는 다목적 저장 공간.

 

- CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다.

레지스터는 범용레지스터, 세그먼트 레지스터, 상태 플래그 레지스터, 명령 포인터 레지스터로 나눌 수 있다.

 

범용 레지스터

모든 일반적인 목적을 위한 레지스터는 16비트로 되어 있으며, 8비트 레지스터로 나누어질 수 있다.

 

종류

구성

용도

AX

AH, AL

수학 연산, I/O연산, INT 21

BX

BH, BL

BASE 또는 Pointer

CX

CH, CL

루프 및 반복

DX

DH, DL

다양한 데이터, 문자 출력

 

386 시피유가 나올 때 4가지의 레지스터가 추가됨. 그것은 EAX, EBX, ECX, EDX 이다

E‘extended’(확장됨)을 의미한다. 기존에는 16비트이였지만 32비트로 확장되었다. EAH, EAL이라는 것은 없다.

 

ESI : 데이터 복사나 조작 시 Source Data의 주소가 저장된다. ESI 레지스터가 가르키는 주소의 데이터를 EDI 레지스터가 가르키는 주소로 복사하는 용도로 많이 사용된다.

EDI : 복사 작업 시 목적지의 주소가 저장된다. 주로 ESI 레지스터가 가르키는 주소의 데이터가 복사된다.

ESP : 하나의 스택 프레임의 끝 지점 주소가 저장된다. push, pop 명령어에 따라너 ESP의 값이 4byte씩 변한다.

EBP : 하나의 스택 프레임의 시작 지점 주소가 저장된다. 현재 상용되는 스택 프레임이 소멸되지 않는 동안 EBP의 값은 변하지 않는다. 현재의 스택 프레임이 소멸되면 이전에 사용되던 스택 프레임을 가리키게 된다.

 

세그먼트 레지스터

CS(code segment) : 코드를 저장하는 메모리 블록

DS(Data segment) : 데이터를 저장하는 메모리 블록

EX(Extra segment) : 비디오와 관련된 것을 위해 사용됨

SS(Stack segment) : 루틴으로부터 리턴 어드레스를 저장하기 위해 프로세서에 의해 사용되는 레지스터

IP : 실행된 명령의 offset을 가지고 있음.

Flag : 분기를 위해 사용됨. 플래그 레지스터는 크기가 1 비트이다.

'pwnable > 정리' 카테고리의 다른 글

ShellShock bash shell 취약점(CVE-2014-6271)  (0) 2018.01.01
IA32 인텔 CPU 구조, 레지스터  (3) 2017.12.20
쉘코드 모음 정리  (1) 2017.12.14
올리 디버거 기초 사용법, 명령어  (0) 2017.12.14
어셈블리어 기초 정리  (0) 2017.12.14
Comments