Reverse Engineering 이란?

소프트웨에어 공학에서 리버싱이란 무엇일까? 일단 사전적 의미를 찾아봤다.

요약
소프트웨어 공학의 한 분야로, 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다. 이것은 시스템을 이해하여 적절히 변경하는 소프트웨어 유지보수 과정의 일부이다.
[
http://100.naver.com/100.nhn?docid=719182]

위 내용은 네이버에서 Reverse Engineering으로 검색했을 때 나오는 사전 자료이다. 위 사전 자료에서는 소프트웨어 공학의 한 분야로만 일축하고 있는 것을 볼 수 있는데 그것보다는 좀더 포괄적인 개념이 있다. 리버스 엔지니어링은 사람이 만들어낸 어떤 것으로 부터 정보를 빼내거나 그것이 어떻게 설계됐는지 알아내는 과정이다. 소프트웨어 공학에서만 나오는 것이 아니라 건축공학, 자동차 공학등 모든 분야의 공학에서 나오는 것이 리버스 엔지니어링이다. 엘다드 에일람(WILEY: Reversing)님의 말을 빌리자면 "리버스 엔지니어링은 과학자들이 원자나 인간의 마음에 대한 설계도를 알아내고자 하는 것과 매우 흡사하다." 과학과 다른 점은 과학은 자연에서 얻고 리버스 엔지니어링은 인간이 만든 어떤 것에서 얻는 다는 것이다. 리버싱을 통해 어떤 제품의 설계도를 가져 오거나 제품의 부품을 가져 올 수도 있다.

소프트웨어 공학에서의 리버스 엔지니어링이란 소스코드로 부터 프로그램의 모든 것들을 알아오는 것을 말한다. 소프트웨어의 생명 주기는 보통 요구사항 분석->설계->소스코드 작성->어셈블리어->기계어 순서로 이루어진다. 하지만 리버스 엔지니어링은 기계어를 어셈블리어로 변환하여 소스코드는 물론 설계, 요구사항 까지 얻어 오는 것을 말한다. 그리고 대한민국의 법에서 리버스 엔지니어링은 "합법"이다.

제12조의2(프로그램코드역분석)

 ①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.

②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.

1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우

2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우


위의 글에서 볼 수 있듯이. 호환에 필요한 부분에 한하여 프로그램 역분석(리버스 엔지니어링)은 합법이다. 하지만 그 외의 목적에 관해서는 불법이라는 것을 볼 수 있다. DMCA(Digital Millenium Copyright Act) (DMCA는 저작권 보호 기술을 보호하기 위해서 1998년에 재정됐다)를 검색해 보면 리버스 엔지니어링의 법에 관한 여러가지 정보를 얻을 수 있다.


한가지 덧 붙이자면 소프트웨어 공학에서의 리버스 엔지니어링은 Reversing(리버싱)으로 불린다.

정리하자면 소프트웨어 공학에서 리버스 엔지니어링(이하 리버싱)은 프로그램의 어셈블리 언어 코드를 보고 프로그램을 분석하는 것이며 어느 정도는 합법적인 것이다.


Bloger: moltak.net

'Security > Reversing' 카테고리의 다른 글

CodeEngn 20  (0) 2010.04.27
CodeEngn 19  (0) 2010.04.27
CodeEngn 18  (0) 2010.04.14
CodeEngn 17  (0) 2010.04.14
CodeEngn 16  (0) 2010.04.13

+ Recent posts