바이트 오더링

바이트 오더링

Description
메모리 데이터 저장 방식
category
Reversing
Tag
Date
Mar 27, 2024 01:27 PM

바이트 오더링

바이트 오더링은 데이터 저장방식을 말한다.
바이트 오더링은 크게 두가지 방식이 존재하는데 빅 엔디언(Big Endian)과 리틀 엔디언(Little Endian)이다.
빅 엔디언은 UNIX 서버에 사용되는 RISC 계열의 CPU에서 사용된다. 또한 네트워크 프로토콜에서도 빅 엔디언이 사용된다.
리틀 엔디언은 Intel x86-x64 CPU에서 사용된다.

간단 예제

BYTE b = 0x12; WORD w = 0x1234; DWORD dw = 0x12345678; char str[] = "abcde";
TYPE
Name
SIZE
Big Endian
Little Endian
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]
 

디버깅을 통한 리틀 엔디언 확인

#include "windows.h" BYTE b = 0x12; WORD w = 0x1234; DWORD dw = 0x12345678; char str[] = "abcde"; int main(int argc, char *argv[]) { BYTE lb = b; WORD lw = w; DWORD ldw = dw; char *lstr = str; return 0; }
LittleEndian.cpp
위 코드를 빌드 후 ollyDbg를 이용하여 분석하였다.
main() 함수로 이동하여 전역변수의 주소를 확인 후 살펴 보았다.
notion image
 
40AC40(b)
notion image
40AC44(w)
notion image
40ㅈAC48(dw)
notion image
40AC4C(str)
notion image