엔지니어링이란 완성품과 이를 구성하는 부품들의 기능과 설계를 고안하고, 제작하는 과정을 말합니다. 이와 대비되는 리버스 엔지니어링(Reverse Engineering) 은 용어의 ‘리버스’가 의미하듯, 위 과정을 거꾸로 하는 행위를 말합니다. 완성된 제품을 해체하고 분석하여 구조와 기능, 디자인을 파악합니다. 책에 따라 이를 ‘역공학’이라고 지칭하기도 하지만, 이 강의에서는 보다 널리 사용되는 ‘리버스 엔지니어링' 또는 ‘리버싱’이라는 단어를 사용하겠습니다.
(드림핵) 소프트웨어 리버싱에 능숙해지기 위해서는 상당히 많은 지식과 기술 그리고 노력이 필요합니다. 소프트웨어와 다양한 컴퓨팅 환경에 대한 깊은 이해를 바탕으로, 적으면 수백 줄, 길면 수만, 수억 줄의 코드로 작성된 프로그램에서 분석할 부분을 찾고, 리버싱을 막기 위해 도입된 안티 리버싱 기술들을 우회해야 합니다. 수학적인 지식이 필요할 때도 있고, 필요한 도구를 직접 개발해야 할 때도 있습니다. 해커의 기본이 되는 기술은 리버싱이지만 이를 숙달하려면 정말 많은 노력이 필요합니다. 그리고 많은 경험을 쌓은 뒤에도 여러분은 가지고 있는 배경 지식만으로는 해결하기 어려운 문제를 맞닥뜨리게 될 수 있습니다. 여기서 추구하는 바는 여러분에게 다양한 지식과 경험을 제공해 드리는 한편, 위와 같은 문제 상황을 스스로 헤쳐나갈 수 있도록 근본적인 힘을 길러드리는 것입니다.
리버싱은 다양한 용도로 사용될 수 있습니다. 다음은 몇 가지 사례들입니다.
이처럼 리버싱은 학습 및 연구용으로 많이 이용되는 기술일 뿐만 아니라, 각종 악성코드나 불법 프로그램의 분석 및 대응을 위해서도 사용되는 효과적인 기술입니다. 그러나 프로그램의 전체적인 작동 원리를 알아낼 수 있으므로, 상용 프로그램의 지적 재산권을 침해할 수 있다는 위험성도 존재합니다.
테스팅이나 연구, 학습 등을 목적으로 한 리버싱의 경우 저작권을 침해하지 않는 한에서 제한적으로 허용됩니다. 그러나 임의로 패치한 프로그램을 배포하는 등 저작권을 침해하는 행위는 법적인 문제로 이어질 수 있습니다. 이 점을 꼭 숙지해주시고, 다음 코스에서 앞으로 사용할 도구들에 대해 살펴보겠습니다.🚩
저작권법 제35조의3 (저작물의 공정한 이용) 제1항 제23조부터 제35조의2까지, 제101조의3부터 제101조의5까지의 경우 외에 저작물의 통상적인 이용 방법과 충돌하지 아니하고 저작자의 정당한 이익을 부당하게 해치지 아니하는 경우에는 보도ㆍ비평ㆍ교육ㆍ연구 등을 위하여 저작물을 이용할 수 있다.
저작권법 제101조의3 (프로그램의 저작재산권의 제한) 제1항 제6호 프로그램의 기초를 이루는 아이디어 및 원리를 확인하기 위하여 프로그램의 기능을 조사ㆍ연구ㆍ시험할 목적으로 복제하는 경우(정당한 권한에 의하여 프로그램을 이용하는 자가 해당 프로그램을 이용 중인 때에 한한다)