본문 바로가기

High Level Technique/Reversing

Byte Ordering

바이트 오더링 (Byte Ordering)


바이트 오더링이란 데이터를 저장하는 방식을 말합니다. 저장하는 방식에는 리틀 엔디안(Little Endian), 빅 엔디안(Big Endian) 방식이 있습니다.


이 2가지 방식에 대해서 알아보도록 하겠습니다.



리틀 엔디안 방식은 인텔 프로세서나 DEC의 알파 프로세서에서 사용합니다.

수의 값을 증가시킬 때 수의 왼편에 자릿수를 추가해야할 필요가 있을지도 모르기 때문에 사용됩니다. 따라서, 확장 축소에 더 효율적이죠.


빅 엔디안 방식은 RISC기반의 컴퓨터와 모토로라, 대형 UNIX서버에서 사용합니다.

사람들이 왼쪽에서 오른쪽으로 언어를 사용하기 때문에 빅 엔디안 방식이 자연스럽죠.





다음과같은 소스가 있다고 하죠.


BYTE b = 0x12;

WORD w = 0x1234;

DWORD dw = 0x12345678;

char str[] = "abcde";




Type

Name 

Size 

Big Endian 

Little Endian 

BYTE 

[12] 

[12] 

WORD 

[12][34] 

[34][12] 

DWORD 

dw 

[12][34][56][78] 

[78][56][34][12] 

char [] 

str 

[61][62][63][64][65][00]

[61][62][63][64][65][00]


※ char str[]에서 [00]이 들어간 이유는 NULL 값이 있기 때문입니다. 그리고 char형은 순서의 바뀜이 없습니다.

'High Level Technique > Reversing' 카테고리의 다른 글

주요 단어  (0) 2015.06.26
Stack, Calling Conventions  (0) 2015.05.19
Back To User Mode  (0) 2015.05.18
UPX Unpacking  (0) 2015.05.18
데이터 타입, 피연산자 타입, 어셈블리 언어  (0) 2015.05.15