작은 메모장

CPU의 레지스터와 주요 명령어 본문

KISA 사이버 보안 훈련/리버스 엔지니어링 훈련

CPU의 레지스터와 주요 명령어

으앙내눈 2023. 7. 4. 23:09

Intel IA32 Processor Register set

인텔의 32비트 마이크로프로세서에서 사용하는 명령 집합 아키텍처의 레지스터 셋

처음에는 8개의 일반 레지스터와 8개의 실수 레지스터를 지원했으나, 시간이 지나며 다양한 레지스터를 지원

 

범용 레지스터

산술/논리 연산에 사용되는 피연산자 정보, 주소 계산을 위한 피연산자 정보, 메모리 포인터 정보를 담고 있는 레지스터

EAX 덧셈 혹은 뺄셈 같은 연산의 결과를 저장
EBX ESI, EDI 레지스터와 결합하여 메모리 주소를 저장
ECX 문자열 및 반복실행 포인터
EDX I/O 포인터
ESI 데이터를 조작하거나 복사시, 소스 데이터의 주소를 저장
EDI 데이터를 조작하거나 복사시, 목적지 데이터의 주소를 저장
EBP 스택에 있는 데이터의 포인터
ESP 스택의 포인터

 

세그먼트 레지스터

GDT(Global Descriptor Table)의 인덱스 값을 포함하고 있는 레지스터

CS 코드 세그먼트 레지스터
DS 데이터 세그먼트 레지스터
SS 스택 세그먼트 레지스터
ES 추가 세그먼트 레지스터
FS -
GS -

 

EFLAGS 레지스터

명령이 실행되는 과정 중 현재 프로세서의 상태정보, 제어 정보 등을 보관

 

EIP 레지스터

다음에 실행할 명령의 주소 값을 보관

 

IA32 기본 명령어

[MOV]

- Source 피연산자의 값을 Destination 피연산자로 복사

- 두 연산자의 사이즈는 반드시 동일해야 함

.text:00401023				mov			DWORD [Address], 0Ah
.text:00401027				mov			eax, DWORD [Address]
.text:0040102A				mov			ecx, eax

 

[MOZX]

- Source 피연산자의 값을 Destination 피연산자로 복사 후 나머지 비트를 0으로 채움

- Destination 피연산자는 레지스터만 사용 가능

.text:00401016				mov			DWORD [Address], 11223344h
.text:0040101D				movzx			eax, WORD [Address]

 

[MOZSX]

- Source 피연산자의 값을 Destination 피연산자로 복사 후 나머지 비트를 Source 피연산자의 부호비트로 채움

.text:00401016				mov			DWORD [Address], 8877h
.text:0040101D				movsx			eax, WORD [Address]

 

[ADD]

- Source 피연산자를 동일한 크기의 Destination 피연산자에 더함

- Source 피연산자는 변하지 않으며 덧셈 결과 값은 Destination 피연산자에 저장

 

[SUB]

- Destination 피연산자를 Source 피연산자만큼 감소

- CPU의 ALU 내부에서는 덧셈이 수행됨

 

[MUL]

- 부호없는 정수에 대한 곱셈을 수행

- AL, AX, EAX 레지스터에 담겨있는 값에 8, 16, 32비트 값을 곱함

- 연산 결과는 AX, DX:AX, EDX:EAX에 저장됨

 

[XOR]

- 두 개의 피연산자에서 매칭되는 비트들을 XOR 연산 후, 결과를 Destination 피연산자에 저장

- 동일한 레지스터가 두 개의 피연산자로 사용될 경우 레지스터의 값을 0으로 초기화

 

[LEA]

- Source 피연산자를 참조하여 계산된 메모리 주소가 Destination 피연산자에 저장

 

[CALL] 과 [JMP]

  JMP CALL
공통점 피연산자로 지정된 주소로 프로그램의 실행 흐름을 변경
차이점 분기하기 직전 현재 EIP값을 스택에 백업하지 않음 분기하기 직전 현재 EIP값을 스택에 백업
JZ, JNZ, JA, JB등의 명령에 조건 분기가 가능 조건 분기 불가능

 

[RET]

- 의미상 "POP EIP" 명령과 동일

- 물론 EIP를 직접적으로 변경하는 명령어라 사용 불가능