1. 리버스 엔지니어링
- Reverse Engineering, RE: 역공학
- 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작등을 분석하여 원리를 이해하며 단점을 보완하고 새로운 아이디를 추가하는 일련의 작업
2. 리버스 코드 엔지니어링
- Reverse Code Engineering, RCE
- 소프트웨어 분야의 역공학
2.1 리버싱 분석방법
● 정적분석
- 파일의 겉모습을 관찰하여 분석하는 방법 → 파일을 실행시키지 않고 분석한다.
- 파일의 내용확인 : 파일의 종류, 크기 헤더(PE)정보, Import/Export API, 내부분자열, 실행 압축여부, 등록정보, 디버깅정보, 디지털인증서, etc...
- 디스어셈블러(Disassembler)을 이용해서 내부 코드와 구조를 확인
● 동적분석
- 파일을 직접 실행시킨 후 프로그램의 실행을 관찰
- 실행중인 프로그램 행위를 분석: 파일, 레지스트리, 네트워크 등을 관찰
- 디버깅을 통해 코드 흐름과 메모리 상태등으로 확인 : 프로그램 내부 구조와 동작 원리를 관찰
2.2 Source Code, Hex Code, Assembly Code
● Source Code
- 우리가 IDE 를 통해 작성하는 코드를 말한다.
● Hex Code
- 빌드를 통해 생성된 실행파일은 2진수(Binary) 형식으로 되어있는데 2진수로 되어있는 코드를 직접보고 그의미를 파악하는것은 매우 힘든 일이다. 그래서 2진수를 16진수로 바꾸어 자릴수를 줄여 변환한 코드이다.
● Assembly Code
- Hex Code도 비교적 Binary Code보다 파악하긴 쉽지만 단순 숫자이기 때문에 의미를 직관적으로 알수 없어 이해하는데 어려움이 있다 그래서 사람이 더 쉽게 이해할 수 있는 Assembly code로 변환한 코드이다.
2.3 패치(Patch)와 크랙(Crack)
● 패치(Patch)
- 프로그램의 파일 또는 실행중인 프로세스 메모리의 내용을 변경하는 작업
- 프로그램의 취약점 수정과 기능 개선등이 주 목적
- EX) Windows Update
● 크랙(Crack)
- 비합법적인 패치
- 주로 저작권을 침해하는행위(불법복제/사용등)에 주로 사용됨
- EX) 상용프로그램 크랙을통한 무료사용등..
'Reverse Engineernig > study' 카테고리의 다른 글
[리버싱 핵심원리] ch05. 스택 (0) | 2022.12.27 |
---|---|
[리버싱 핵심원리] ch04. IA-32 Register 기본 설명 (0) | 2022.12.27 |
[리버싱 핵심원리] ch03. 리틀 엔디언 표기법 (0) | 2022.12.26 |
[리버싱 핵심원리] ch02. Hello World! 리버싱 (0) | 2022.12.26 |
[Assembly]어셈블리어 명령어 모음 (0) | 2022.06.08 |