cod36eek.space
cod36eek blog

[23-W] Reversing 01. (1) 리버스 엔지니어링

October 9, 2023

리버스 엔지니어링이란🔍

엔지니어링이란 완성품과 이를 구성하는 부품들의 기능과 설계를 고안하고, 제작하는 과정을 말합니다. 이와 대비되는 리버스 엔지니어링(Reverse Engineering) 은 용어의 ‘리버스’가 의미하듯, 위 과정을 거꾸로 하는 행위를 말합니다. 완성된 제품을 해체하고 분석하여 구조와 기능, 디자인을 파악합니다. 책에 따라 이를 ‘역공학’이라고 지칭하기도 하지만, 이 강의에서는 보다 널리 사용되는 ‘리버스 엔지니어링' 또는 ‘리버싱’이라는 단어를 사용하겠습니다.

(드림핵) 소프트웨어 리버싱에 능숙해지기 위해서는 상당히 많은 지식과 기술 그리고 노력이 필요합니다. 소프트웨어와 다양한 컴퓨팅 환경에 대한 깊은 이해를 바탕으로, 적으면 수백 줄, 길면 수만, 수억 줄의 코드로 작성된 프로그램에서 분석할 부분을 찾고, 리버싱을 막기 위해 도입된 안티 리버싱 기술들을 우회해야 합니다. 수학적인 지식이 필요할 때도 있고, 필요한 도구를 직접 개발해야 할 때도 있습니다. 해커의 기본이 되는 기술은 리버싱이지만 이를 숙달하려면 정말 많은 노력이 필요합니다. 그리고 많은 경험을 쌓은 뒤에도 여러분은 가지고 있는 배경 지식만으로는 해결하기 어려운 문제를 맞닥뜨리게 될 수 있습니다. 여기서 추구하는 바는 여러분에게 다양한 지식과 경험을 제공해 드리는 한편, 위와 같은 문제 상황을 스스로 헤쳐나갈 수 있도록 근본적인 힘을 길러드리는 것입니다.

리버싱의 용도

리버싱은 다양한 용도로 사용될 수 있습니다. 다음은 몇 가지 사례들입니다.

Good Case👍

  • 판매된 지 너무 오래되어 제작사가 이미 개발을 중단한 프로그램에 대한 패치가 필요할 때 리버싱은 매우 효과적입니다. 실제로 1996년에 발매된 ‘디아블로1’이 리버싱을 거쳐 모딩된 버전이 공개된 바 있습니다.
  • 또한, 각종 프로그램의 보안성을 평가하거나 악성코드를 분석할 때도 리버싱이 널리 쓰입니다. 리버싱을 통해 대상 프로그램이 얼마나 안전하게 설계되었는지, 혹은 대상 악성코드가 어떤 방식으로 동작하고 시스템에 피해를 입히는지 알아낼 수 있습니다.

Bad Case👎

  • 상용 프로그램을 구매하지 않고 무료로 이용하기 위해 쓰는 키젠 프로그램이나 시리얼 넘버 생성기, 크랙 등의 불법 프로그램도 리버싱을 통해 만들어집니다. 유료로 판매되는 프로그램들이 어떤 방식으로 정품 인증을 하는지를 리버싱을 통해 알아낼 수 있기 때문입니다.
  • 또 각종 프로그램을 분석해서 게임핵을 만들 때도 리버싱이 사용됩니다.

⚠️Disclaimer

이처럼 리버싱은 학습 및 연구용으로 많이 이용되는 기술일 뿐만 아니라, 각종 악성코드나 불법 프로그램의 분석 및 대응을 위해서도 사용되는 효과적인 기술입니다. 그러나 프로그램의 전체적인 작동 원리를 알아낼 수 있으므로, 상용 프로그램의 지적 재산권을 침해할 수 있다는 위험성도 존재합니다.

테스팅이나 연구, 학습 등을 목적으로 한 리버싱의 경우 저작권을 침해하지 않는 한에서 제한적으로 허용됩니다. 그러나 임의로 패치한 프로그램을 배포하는 등 저작권을 침해하는 행위는 법적인 문제로 이어질 수 있습니다. 이 점을 꼭 숙지해주시고, 다음 코스에서 앞으로 사용할 도구들에 대해 살펴보겠습니다.🚩

관련 저작권법⚖️

  • 저작권법 제35조의3 (저작물의 공정한 이용) 제1항 제23조부터 제35조의2까지, 제101조의3부터 제101조의5까지의 경우 외에 저작물의 통상적인 이용 방법과 충돌하지 아니하고 저작자의 정당한 이익을 부당하게 해치지 아니하는 경우에는 보도ㆍ비평ㆍ교육ㆍ연구 등을 위하여 저작물을 이용할 수 있다.

  • 저작권법 제101조의3 (프로그램의 저작재산권의 제한) 제1항 제6호 프로그램의 기초를 이루는 아이디어 및 원리를 확인하기 위하여 프로그램의 기능을 조사ㆍ연구ㆍ시험할 목적으로 복제하는 경우(정당한 권한에 의하여 프로그램을 이용하는 자가 해당 프로그램을 이용 중인 때에 한한다)

© Copyright 2023 cod36eek.space. Powered with by CreativeDesignsGuru