1. 리버스 엔지니어링?

- 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 원리 이해 및 단점 보완

 

2. 리버스 코드 엔지니어링?

- 소프트웨어 분야에서의 리버스 엔지니어링

- 소프트웨어를 리버싱 관점에서 상세 분석

 

3. 리버싱 분석 방법

실행 파일의 분석 방법에는 정적 분석동적 분석이 있다.

3-1. 정적 분석

- 파일을 실행하지 않고 분석한다.

- 파일의 종류, 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등 내용 확인 (정보 수집)

- 정적 분석에서 확인한 내용은 동적 분석에서 활용

3-2.  동적 분석

- 파일을 실행하여 분석한다.

- 디버깅을 이용하여 코드 흐름 및 메모리 상태 등 확인

- 파일, 레지스트리, 네트워크 등 관찰하여 프로그램 행위 분석

- 디버거하여 프로그램 내부 구조와 동작 원리 분석

- 2진수(Binary) → 16진수(Hex) → 어셈블리(Assembly)

  소스코드를 작성하여 빌드하게 되면 .exe 실행 파일이 생성된다.

  .exe 실행 파일은 2진수로 만들어진다.

  2진수를 16진수로 변환시킨다.

  변환 시킨 Hex Code(16진수)를 Disassemble 과정을 거쳐 어셈블리 코드 형태로 변환시킨다.

 

4. 패치와 크랙

패치와 크랙은 같은 개념이지만 주된 목적이 다르다.

4-1. 패치

- 프로그램 파일이나 실행 중인 프로세스 메모리의 내용 변경 -> 프로그램 취약점 수정 및 기능 개선

4-2. 크랙

- 프로그램 파일이나 실행 중인 프로세스 메모리의 내용 변경 -> 저작권 침해 행위(불법 복제 및 사용)

 

 

 

 

'Forensic > Reversing' 카테고리의 다른 글

[Reversing] abex' crackme #2 실습  (0) 2022.01.12
[Reversing] 스택 프레임(Stack Frame)  (0) 2022.01.09
[Reversing] abex' crackme #1 분석 및 크랙(1)  (0) 2022.01.09
[Reversing] 스택!  (0) 2022.01.09
[Reversing] Hello World!  (0) 2022.01.09

+ Recent posts