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
컴퓨터에서 메모리에 데이터를 저장하는 방식
- 빅 엔디언 Big Endian단점: Windows의 intel에서는 사용 x
- 장점: 보기에 직관적
- 리틀 엔디언 Little Endian단점: 보기에 직관적이지 않다
- 장점:Windows에서 사용된다. 데이터를 효율적으로 저장할 수 있다.
→ 빅 엔디언(정방향)은 모든 데이터를 순서대로 저장한다. 반면, 리틀 엔디언(역방향)은 모든 데이터를 역순으로 저장한다. 하지만 예외로, 1byte와 str 문자열은 정방향으로 저장한다. 따라서 멀티 바이트만 역순으로 저장한다.
실습) 리틀엔디언의 저장방식을 관찰하고 이해하기