레지스터는 처리중인 데이터나 처리 결과를 임시 보관하는 CPU 내의 기억장치로, 대게 연산 장치나 제어 장치에 포함되어 있다.
EAX 레지스터
입출력과 대부분 산술 연산에 사용됩니다! [ex -> 곱셈,나눗셈,변환 명령 등,,]
win 32 API 함수들은 모두 리턴 값을 EAX에 저장한 후 리턴한다고 한다.
EBX 레지스터
DS 세그먼트에 대한 포인터를 저장합니다 (DS 세그먼트 안의 데이터를 가리킴)
ESI + DSI와 결함, 인덱스에 사용된다고 합니다. 또한 메모리의 주소 지정을 확장하기 위해 인덱스로 사용 가능한
유일한 범용 레지스터 입니다.
ECX 레지스터
문자열 처리나 루프가 반복되는 횟수를 제어합니다(루프를 위한 카운터)
EDX 레지스터
입출력 연산에 사용,EAX와 함께 사용됩니다. (I/O 포인터)
ESI + EDI 레지스터 [인덱스 레지스터]
ESI는 DS 레지스터가 가리키고 있는 데이터 세그먼트 내의 어느 데이터를 가리키고 있습니다.
EDI는 ES 레지스터가 가리키고 있는 데이터 세그먼트 내의 어느 데이터를 가리키고 있으므로
둘다 데이터 세그먼트 내의 어느 데이터를 가리키고 있는것 같으나
ESI는 문자열 처리에서 source를, EDI는 문자열 처리에서 destination을 가리키고 있습니다.
주로.. 메모리의 한 영역에서 다른 영역으로 데이터를 연속적으로 복사할때 쓰인다고 하는군요.
EBP 레지스터 [포인터 레지스터]
SS 레지스터가 가리키는 스텍 상의 한 데이터를 가리키는 포인터입니다.
함수의 시작주소 저장, 지역 변수 등을 참조할때 기준이 되며, ESP 레지스터와 함께 쓰이면서 스택 프레임을 형성,
스택 프레임? -> 함수가 호출 될때 ESP을 EBP에 저장하고 있다가(mov %esp, %ebp) , 모든 루틴이 끝나고
함수가 리턴시 이 ESP 값을 돌려주어 스택 형성에 문제가 생기지 않도록 하는 기법이다.
(SS -> 스택 세그먼트 레지스터) <- 곧 배울것입니다.
ESP 레지스터 [포인터 레지스터]
SS 레지스터가 가리키는 스택 세그먼트의 맨 꼭대기를 가리키는 포인터입니다.
스택 확장시 -> 상위 주소에서 하위주소로 값이 바뀜
이때 가장 하위 주소를 저장하는 역할을 하는 것이 이 ESP 레지스터이다.
+ EIP 레지스터 [포인터 레지스터] [Instruction Pointer]
현재 실행 중인 코드 세그먼트에 속한 현재 명령을 가리키며, 실제 메모리상의 주소를 참조할 때 CS 레지스터와
함께 사용됩니다.
'정보보안 개론과 실습 정리 > Chapter1(시스템 해킹을 위한 기초 지식)' 카테고리의 다른 글
8086 시스템 구조 (0) | 2018.12.06 |
---|