본문 바로가기

Security study/CTF

[Reversing] 레지스터

[1] 레지스터

레지스터는 간단히 말하면 CPU가 사용하는 변수이다. 레지스터는 EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP 가 있다.

  • EAX (Extended Accumulator Register)

    -> 계산(Accumulator)용으로 곱셈과 나눗셈 등의 명령에서 사용하도 함수의 return 값을 저장한다.

  • EDX (Extended Data Register)

    -> D가 Data를 나타내며 곱셈과 나눗셈에 EAX와 같이쓰이나 리턴값으로는 사용되지 않는다. 부호 확장 명령 등으로 사용된다.

  • ECX (Extended Counter Register)

    -> 산술 연산 레지스터로, C는 Count를 나타내며 반복문을 수행할 때 카운팅하는 역할을 한다. 반복 횟수를 저장한다.

  • EBX (Extended Base Register)

    -> 산술 연산 레지스터로, ESI나 EDI와 같이 인덱스에 사용된다.

  • ESI, EDI

    -> ESI는 문자열이나 각종 반복 데이터를 처리 또는 메모리를 옮기는데 사용된다. 보통 ESI는 시작 인덱스, EDI는 목적지 인덱스로 사용된다. 둘 다 데이터를 복사, 비교할 때 쓰인다.

  • EBP (Extended Base Pointer) : 포인터 레지스터, 스택 프레임의 시작 주소가 저장된다.
  • ESP (Extended Stack Pointer) : 포인터 레지스터, 스택 프레임의 가장 최근 주소를 저장한다.
  • EIP (Extended Instruction Pointer) : 포인터 레지스터, 다음 명령어가 저정된 메모리의 주소를 저장한다.

'Security study > CTF' 카테고리의 다른 글

[Reversing] CodeEngn Basic RCE L17  (0) 2021.02.27
[Reversing] CodeEngn Basic RCE L07  (0) 2021.02.26
[Reversing]codeengn Basic RCE L15  (0) 2021.02.25
[Reversing] codeengn Basic RCE L09  (0) 2021.02.24
[Reversing] codeengn Basic RCE L04  (0) 2021.02.24