리버스 엔지니어링
리버스 엔지니어링이란?
- Reverse Engineering 또는 역공학
- 장치 또는 시스템의 기술적인 원리를 그 구조 분석을 통해 발견하는 과정
- 기계 장치, 전자 부품, 소프트웨어 프로그램 등을 분해해서 분석하는 것
- 상업적 또는 군사적으로 하드웨어를 분석한 것에서 시작되었음
- 원본 생산 절차에 대해 전혀 지식이 없는 상태에서, 최종 물품을 가지고 설계 과정을 추론하는 것
- 제품 개선, 유사 제품 개발, 고장 분석 및 복구, 보안 분석 등에 유용함
특징 및 장점
- 실전에 쓰이며 검증되고 있는 물건을 토대로 개발하는 것이기 때문에,
무에서부터 유를 창조하는 것과는 비교도 할 수 없을 정도로 고효율 방식 - 제품 개선 및 개발 시간 단축 - 비용 절감 - 기술 습득
방법
소프트웨어
- 정적 분석
- IDA, ghidra 등 디컴파일러를 사용해 실행 바이너리로부터 소스를 역추출하기도 함
- 동적 분석
- ollydbg, x64dbg, GDB 등의 디버거들을 실행시켜놓고 프로그램을 실행시켜 어떤 값이 어떤 명령어와 함께 실행되는지 관찰
- 리버스 엔지니어링을 막기 위해 프로그램의 분석을 최대한 복잡하게 만들기도 함
하드웨어
- 제품을 부품 단위로 분해하여, 각 부품의 데이터시트를 찾아보는 방법으로 리버싱
단점
- 법적 문제가 발생할 수 잇음
- 저작권 및 판권
- 복잡한 제품의 경우 정확도가 제한적일 수 있음
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.