1. 역공학 (Reverse Engineering)
ㅇ 이미 완성된 제품이나 시스템을 분석하여,
- 구조, 동작 원리, 설계 의도 및 구현 기술 등을 파악하고,
- 이를 바탕으로 성능 개선, 기술 습득, 호환 제품 개발 등에 활용하는 기법
ㅇ 기존 제품을 처음부터 새로 설계하는 데 필요한 시간과 비용을 줄이고,
- 우수한 설계기법을 습득하거나,
- 다른 제품의 설계 및 개발에 적용할 수 있는 기술적 통찰력을 얻음
ㅇ 소프트웨어 개발 방법론에서 볼 때,
- 생명주기 후반의 산출물(실행파일, 소스코드, DB 등)로부터,
- 초기 단계의 설계 문서나 요구사항 등을 유추,복원하는 과정
- 즉, 구현 결과를 분석하여 설계내용을 역으로 추적하는 것
- 例)
. 소스코드 → 클래스 다이어그램, UML 구조도 생성
. 실행 파일 (바이너리 분석) → 프로그램 구조 및 알고리즘 분석
. 데이터베이스 스키마 → ERD 및 데이터 모델 복원
ㅇ 주요 활용
- 호환 제품 개발 및 인터페이스 분석
- 레거시 시스템의 문서화 및 유지보수
- 보안 취약점 분석 및 악성코드 분석
- 성능 개선 및 기술 이전, 특허 분석 등