Security/Reversing

[Reversing] 03. 리틀 엔디언 표기법

cho2cee 2021. 11. 25. 23:24

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