1. 바이트 오더링
바이트 오더링이란 컴퓨터에서 메모리에 데이터를 저장하는 방식을 의미
바이트 오더링 방식에는 크게 빅 엔디언(Big Endian)과 리틀 엔디언(Litle Endian) 방식이 있다.
총 4개의 (크기가 다른) 자료형은 각 엔디언 방식에 따라서 저장하는 방식이 다르다.
Type | Name | Size | 빅 엔디언 | 리틀 엔디언 |
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] |
📌 ASCII 문자 'a'는 0x61과 같고, 'e'는 0x65와 같다. 그리고 문자열 마지막은 NULL로 끝이 난다.
바이트 타입의 b 변수를 저장할 떄는 차이가 없지만 2바이트 이상의 크기를 가진 자료형을 가질 때부터 차이가 나타난다.
빅 엔디언 방식은 데이터를 저장할 때 사람이 보는 방식과 동일하게 앞에서부터 순차적으로 저장하지만 리틀 엔디언 방식은 데이터를 저장할 때 역순으로 저장한다.
1.1 리틀 엔디언 & 빅 엔디언
빅 엔디언의 장점: 사람이 보기에 직관적이다.
대형 UNIX 서버에 사용되는 RISC 계열의 CPU에서 많이 사용되며, 네트워크 프로토콜에도 빅 엔디언이 사용된다.
➜ x86 애플리케이션 개발에 사용된 데이터를 네트워크로 송수신할 때 엔디언 타입을 변경해야 함
➜ Windows 계열 리버서들은 리틀 엔디언에 대해 잘 알아야 한다.
데이터를 역순으로 저장시키는 리틀 엔디언 방식도 산술 연산과 데이터의 타입이 확장/축소될 때 더 효율적이다.
Reference
🔗 http://www.yes24.com/Product/Goods/7529742
'Security > Reversing' 카테고리의 다른 글
[Reversing] 05. 스택 (0) | 2021.11.26 |
---|---|
[Reversing] 04. IA-32 Register 기본 설명 (0) | 2021.11.25 |
[Reversing] OllyDbg 기초 사용법 (0) | 2021.11.25 |
[Reversing] 02장. Hello World! 리버싱 (0) | 2021.11.22 |
[Reversing] 01장. 리버싱 스토리 (0) | 2021.11.21 |