예제

LittleEndian.exe


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