그냥 공부_1

Reverse Eng2017. 11. 30. 23:09

 

레지스터 집합
RAX [64bit => 8byte]/ EAX [32bit => 4byte]/ AX [16bit => 2byte]/ AH [8bit => 1byte]/ AL [8bit => 1byte]  
RBX/ EBX/ BX/ BH/ BL
RCX/ ECX/ CX/ CH/ CL
RDX/ EDX/ DX/ DH/ DL
RBP/ EBP/ BP/ BH/ BL
RSP/ ESP


IA-32 레지스터
------------------------------------------------------------------------------------------------------------------------
EAX :: Accumulator :: 누산기
EBX :: Base :: 베이스
ECX :: Counter :: 카운터, 반복을 요구하는 명령의 경우 반복 횟수 지정
EDX :: Data :: 데이터
EBP :: Base Pointer :: 프레임 포인터
ESI :: Source index :: 송신 측 번지 지정
EDI :: Destination index :: 수신 측 번지 지정
ESP :: Stack Pointer :: 스택 top의 번지 지정, 스택 관리

------------------------------------------------------------------------------------------------------------------------

 

EAX 가 실제 누산에 관여하는지 확인해 보았다.

[실제 원본 코드]

# include <stdio.h>

int main(void) {
 int v1 = 0x10;
 int v2 = 0x11;
 int v3 = 0x0;
 v3 = v1 + v2;
 return 0;
}

 

 

 

 

스택 포인터 (stack pointer , RSP(64bit), ESP(32bit))

[1] 스택의 시작을 기저 (Bottom) 또는 베이스(Base) 라고 함

[2] Push(푸시) : 데이터 삽입  :: (데이터를 삽입하기 전에 Is_Full 이라는 함수를 먼저 호출한다. (왜냐하면 스택의 크기는 무한정 크지 않기 때문이다.))

[3] Pop(팝) : 데이터 제거  :: (데이터를 제거하기 전에 Is_Empty 이라는 함수를 먼저 호출한다.)

 

스택의 특징

 [1] LIFO (후입 선출, Last In First Out) // FILO (First In Last Out)

 : 스택 포인터의 감소는 스택 자체가 늘어나는 것을 의미 ( "스택은 거꾸로 자라난다." )

 스택 포인터의 증가는 스택 크기가 감소하는 것을 믜미

(* 32비트인 경우는 4바이트, 64비트의 겨우는 8바이트 단위로 스택 포인터가 증가 또는 감소)

 

 

ebp : 0019FF04

esp : 0019FEB4 : 10 00 00 00 (little endian)

============================================

ebp : 0019FF04

esp : 0019FEB0 : 11 00 00 00

============================================

ebp : 0019FF04

esp : 0019FEAC : 12 00 00 00

============================================

 

ebp : 0019FF04

esp : 0019FEA8 : 13 00 00 00

============================================

ebp : 0019FF04

esp : 0019FEAC

ebx : 00000013

============================================

ebp : 0019FF04

esp : 0019FEB0

ebx : 00000012

============================================

ebp : 0019FF04

esp : 0019FEB4

ebx : 00000011

============================================

ebp : 0019FF04

esp : 0019FEB8

ebx : 00000010

============================================

'Reverse Eng' 카테고리의 다른 글

리버싱  (0) 2018.10.07
리버싱 공부  (0) 2018.01.22
Rev_3  (0) 2017.11.20
Rev_2  (0) 2017.11.12
Rev_1  (0) 2017.10.06