reversing

리버싱 개념, 크랙과 패치, 바이트 오더링

hauni 2024. 9. 28. 01:29

리버싱

컴퓨터 용어 X, 역공학

Reverse Engineering == Reverse Code Engineering

  • 리버싱 분석 방법
    • 정적 분석정적 파일의 겉모습을 분석
    • IDA(정적/동적)
    • 파일을 실행하지 않고 분석
    • 동적 분석동적 파일 깊이 들어가서 분석하고 관찰
    • Cheat Engine, Olly dbg, x64dbg << 동적 분석 프로그램
    • 파일을 실행하고 분석하는 방법

코드

  • 소스코드
  • ex) printf(”hello world”);
  • Hex code
  • assembly code
  • ex) moc eax, ebx

패치와 크랙

패치: 프로세스의 메모리를 변경하는 것

크랙: 패치와 비슷하지만 비도덕적인 메모리 변경

프로그램 빌드 과정: 전처리 → 컴파일 → 어셈블 → 링크

실습) 디버깅의 목표

Hello World 실행파일을 디버깅하여 어셈블리 언어로 변환하고 main함수를 찾아보기. 이 과정을 통해 기본적인 디버거의 사용 방법과 어셈블리 명령어를 알아보자.

→ 한 줄 한 줄 F8로 찾아나가기

  • EP: Entry Point
  • BP: Break Point

바이트 오더링 Byte Ordering

컴퓨터에서 메모리에 데이터를 저장하는 방식

  1. 빅 엔디언 Big Endian단점: Windows의 intel에서는 사용 x
  2. 장점: 보기에 직관적
  3. 리틀 엔디언 Little Endian단점: 보기에 직관적이지 않다
  4. 장점:Windows에서 사용된다. 데이터를 효율적으로 저장할 수 있다.

→ 빅 엔디언(정방향)은 모든 데이터를 순서대로 저장한다. 반면, 리틀 엔디언(역방향)은 모든 데이터를 역순으로 저장한다. 하지만 예외로, 1byte와 str 문자열은 정방향으로 저장한다. 따라서 멀티 바이트만 역순으로 저장한다.

실습) 리틀엔디언의 저장방식을 관찰하고 이해하기