본문 바로가기

dreaMhack/Reverse Engineering

[드림핵] 리버싱 레지스터 용도 정리

 

범용 레지스터: General Register

이름 주용도 하위 32비트 하위 16 상위 8 하위 8
rax(accumulator register) 함수의 반환 값 EAX AX AH AL
rbx(base register) x64에서는 주된 용도 없음 EBX BX BH BL
rcx(counter register) 반복문의 반복 횟수, 각종 연산의 시행 횟수 ECX CX CH CL
rdx(data register) x64에서는 주된 용도 없음 EDX DX DH DL
rsi(source index) 데이터 옮길 때 원본을 가리키는 포인터 ESI SI    
rdi(destination index) 데이터 옮길 때 목적지를 가리키는 포인터 EDI DI    
rsp(stack pointer) 사용 중인 스택의 위치를 가리키는 포인터 ESP SP    
rbp(stack base pointer) 스택의 바닥을 가리키는 포인터 EBP BP    

 

하위, 상위 비트 위치 참고

 

세그먼트 레지스터: Segment Register

cs (code 영역), ss (stack 영역), ds (data 영역), es, fs, gs

 

명령어 포인터 레지스터: Instruction Pointer Register

rip: CPU가 어느 부분의 코드를 실행할지 가리킴 (8바이트 크기)