리버스 엔지니어링

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

리버스 엔지니어링(영어: reverse engineering, RE) 또는 역공학(逆工學)은 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정이다. 이것은 종종 대상(기계 장치, 전자 부품, 소프트웨어 프로그램 등)을 조각내서 분석하는 것을 포함한다. 그리고 유지 보수를 위해, 또는 같은 기능을 하는 새 장치를 원본의 일부를 이용하지 않고 만들기 위해 대상의 세부적인 작동을 분석하는 것을 포함한다.

리버스 엔지니어링의 기원은 상업적 또는 군사적으로 하드웨어를 분석한 것에서 시작되었다. 목적은 원본 생산의 절차에 관한 지식이 거의 없는 상태에서, 최종 제품을 가지고 디자인 결정과정을 추론하는 것이다. 같은 기술이 레거시 소프트웨어 시스템을 응용하기 위해 현재 연구되고 있는데, 산업이나 국방이 아니고, 오류, 미완성, 접근 불가인 문서를 수정하기 위함이다.

사용 이유[편집]

  • 소프트웨어 간의 상호 운용성
  • 사라진 문서
  • 상품 분석
  • 디지털 업데이트/수정
  • 안전 감사
  • 군사 또는 산업 간첩
  • 복제 보호 해제
  • 허가되지 않은 불법 복제의 생성
  • 소프트웨어 불법 정품 인증 및 시리얼 코드 생성
  • 소프트웨어 키젠크랙 생성
  • 학술/학문적 추구
  • 호기심
  • 경쟁사의 기술 정보 분석
  • 악성코드 분석
  • 소프트웨어 보안성 테스트

대표적인 도구[편집]

소프트웨어 리버스 엔지니어링을 위해 IDA ProOllyDbg 등의 도구들이 사용된다. 이 도구들은 어셈블리 언어들을 분석하기 쉽게 하도록 분석하는 기능과 코드를 변형하는 기능등을 제공한다.

리버스 엔지니어링에 대한 오해[편집]

현재 이 문단은 주로 대한민국에 한정된 내용만을 다루고 있습니다. 다른 국가·지역에 대한 내용을 보충하여 문서의 균형을 맞추어 주세요. 내용에 대한 의견이 있으시면 토론 문서에서 나누어 주세요.

대한민국과 같은 일부 국가에서는 리버스 엔지니어링을 금지하고 있다. 그런데 이때 금지하는 것은 이진 코드로 이루어진 실행 파일(또는 실행 루틴)의 리버스 엔지니어링을 금지하고 있을 뿐, 실행 결과로써 만들어진 파일이나, 그 파일의 형식을 리버스 엔지니어링 하는 것을 금지하지는 않는다.

같이 보기[편집]