예제
바이트 오더링(Byte Ordering)
- 컴퓨터에서 메모리에 데이터를 저장하는 방식을 의미함
- 애플리케이션의 디버깅을 할 때 알아두어야 하는 기본 개념 중 하나입니다.
- 바이트 오더링 방식에는 크게 두 가지가 있습니다. 빅 엔디언(Big Endian), 리틀 엔디언(Little Endian)
빅 엔디언과 리틀 엔디언의 차이점
자료형에 따라서 각 엔디언에 어떻게 저장하는지 비교
Type |
Name |
Size |
빅 엔디언 Style |
리틀 엔디언 Style |
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] |
빅 엔디언 : 앞에서 부터 순차적으로 저장합니다.
리틀 엔디언 : 바이트 순서가 뒤집혀 있습니다.
바이트(BYTE) 타입의 변수를 저장할 때는 두방식의 차이가 없다.
하지만 2바이트 이상의 크기를 가진 자료형을 저장할 때부터 차이가 있다.
문자열은 결국 char 배열이기 떄문에 각 바이트를 하나씩 연속해서 저장.
Intel x86 CPU에서 리틀 엔디언 방식을 사용함
- 메모리에 저장된 상태 확인하기.
dw에 들어있는 데이터가 리틀 엔디언 표기법으로 저장됨.
반응형
'Programming > Reverse Engineering' 카테고리의 다른 글
자바 디컴파일(Java Decompiler) (0) | 2018.03.21 |
---|---|
ILSpy(Decompiler) (0) | 2017.02.05 |
함수 호출 규약(Calling Convention) (0) | 2016.04.06 |
abex' crackme (크랙 연습 예제) (0) | 2015.05.29 |
문자열 패치 (0) | 2015.04.26 |
리버싱 Hello World (0) | 2015.04.25 |