[3장] Little Endian 표기법

beanii·2023년 10월 23일
0

Reversing Study

목록 보기
3/4
post-thumbnail

3.1. 바이트 오더링


  • 바이트 오더링: 데이터를 저장하는 방식
    • 크게 두 가지 방식: 빅 엔디언(Big Endian), 리틀 엔디언(Little Endian)
TYPENameSIZE빅 엔디언 Style리틀 엔디언 Style
BYTEb1[12][12]
WORDw2[12][34][34][12]
DWORDdw4[12][34][56][78][78][56][34][12]
char []str6[61][62][63][64][65][00][61][62][63][64][65][00]

3.1.1. 리틀 엔디안 & 빅 엔디안

  • 빅 엔디언
    • 장점: 사람이 보기에 직관적임
    • 대형 UNIX 서버에 사용되는 RISC 계열의 CPU에서 많이 사용됨
    • 네트워크 프로토콜에 사용됨
    • 애플리케이션 개발에 사용된 데이터를 네트우크로 송수신할 때 엔디언 타입 변경하기 때문 중요
  • 리틀 엔디언
    • Intel x86 CPU에서 사용됨
    • 장점: 데이터를 역순으로 저장 -> 산술 연산과 데이터의 타입 확장/축소 시 더 효율적임

3.1.2. OllyDbg에서 리틀 엔디안 확인

  • LittleEndian.cpp: 테스트를 위한 코드

  • 디버거로 실행파일 열고 401000 주소로 이동

  • 전역 변수들의 주소: 40AC40(b), 404AC44(w), 40AC48(dw), 40AC4C(str)

  • 메모리 영역(40AC40)을 보면 변수 w와 dw 값들이 리틀 엔디언 형식으로 저장된 것을 확인 가능

0개의 댓글