728x90
1. 리버스 엔지니어링 개요
개요
리버스 엔지니어링 (Reverse Engineering)
- 프로그램의 목적코드 조사 또는 분석을 통해 프로그램의 구조를 파악하는 과정
- 하드웨어를 물리적으로 분해해서 분석하는 것도 리버싱의 일종
- 우리나라의 경우 이진코드로 이루어진 실행 파일의 리버스 엔지니어링을 부분적으로 제한
- 리버스 엔지니어링을 이용하여 포르개림의 원본 소스코드 추출
- RCE (Reverse Code Engineering) 이라고도 부름
- 다양한 개발 언어적 지식 필요
리버스 엔지니어링의 순기능
- 스프트웨어 호환성 및 성능 향상
- 소프트웨어 보안성 테스트
- 학술 / 학문적 추구
- 악성코드 분석
리버스 엔지니어링의 역기능
- 소프트웨어 불법 복제
- 불법 정품 인증
- 소프트웨어 키젠 및 크랙 생성
리버스 엔지니어링 방법
컴파일 언어
컴파일러가 원본 소스코드를 기계어로 전체 변환 후 실행
원본 소스코드 복원 불가 → 어셈블리어로 분석
인터프리터 언어
인터프리터는 소스코드를 한 줄씩 읽어 실행
실행 파일 자체가 원본 소스 코드 → 소스 코드 분석
JIT 언어
JIT 컴파일러가 각 언어마다 자체 특정 코드(바이트코드)로 변환
원본 소스코드로 복원 가능 → 소스 코드 분석
리버스 엔지니어링 분석 방법
정적 분석
소프트웨어를 실행하지 않고, 분석하는 방법
Ex) 파일 헤더 정보, 파일 크기, 내부 문자열, 실행 압축 여부 등등
동적 분석
소프트웨어를 실행하고 분석하는 방법
Ex) 메모리 상태, 레지스트리, 네트워크 상태, 기타 행위 분석 등등
하이브리드 분석
동적분석과 정적분석을 혼합해서 분석하는 방법
프로그램이 동작하기 전의 운영체제 상태를 모니터링하다가 프로그램이 동작하면 변화되는 형태 추적
2. 리버스 엔지니어링과 법
저작권법
- 이 법은 저작자의 권리와 이에 인접하는 권리를 보호하고 저작물의 공정한 이용을 도모함으로써 문화 및 관련 산업의 향상 발전에 이바지함을 목적으로 한다
'Reversing' 카테고리의 다른 글
Switch.exe / Switch2.exe (0) | 2021.08.26 |
---|---|
Basic_BOF 1 (0) | 2021.08.25 |
if.exe ; if_hard.exe (0) | 2021.07.21 |
Reversing 01. (0) | 2021.07.21 |