본문 바로가기

공부/리버싱

리버싱 공부 03

<리버싱 핵심 원리>로 공부하였다.

 

03 리틀 엔디언 표기법

3.1. 바이트 오더링 : 데이터를 저장하는 방식(빅 엔디언, 리틀 엔디언)

 

BYTE b = 0x12;
WORD w = 0x1234;
DWORD dw = 0x12345678;
char str[] = "abced";

 

타입 이름 크기 빅 엔디언 리틀 엔디언
BYTE b 1 [12] [12]
WORD w 2 [12][34] [34][12]
DWORD dw 4 [12][34][56][78] [78][56][34][12]
char [] str 6 [61][62][63][64][65][00] [61][62][63][64][65][00]

즉, 리틀 엔디언 방식은 데이터 순서를 반대로 저장한다. 리틀 엔디언도 바이트 자체는 정상적인 순서로 저장한다.

문자열은 char 배열이기 때문에 각 바이트를 하나씩 연속해서 저장한다고 생각하면 된다. 그래서 차이x

  빅 엔디언 리틀 엔디언
장점 사람이 보기에 직관적 산술 연산과 데이터의 타입이 확장/축소 될 때 효율적
이용 RISC 계열 CPU, 네트워크 프로토콜 Intel x86 CPU

 

실제로 리틀 엔디언 방식으로 어떻게 저장되는지 확인해보자. 다음과 같은 코드를 입력하고 빌드해 exe 파일 생성한다.

OllyDbg에서 덤프쪽을 확인하면 위와 같이 정말 리틀 엔디언 방식으로 저장되어있는 것을 확인할 수 있다.

'공부 > 리버싱' 카테고리의 다른 글

리버싱 공부 06  (0) 2022.01.09
리버싱 공부 05  (0) 2022.01.09
리버싱 공부 04  (0) 2022.01.09
리버싱 공부 02  (0) 2022.01.09
리버싱 공부 01  (2) 2022.01.09