바이트 오더링 (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 |
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 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 |