본문 바로가기
프로그래밍

디컴파일러(역컴파일러)

by minimax95 2021. 1. 31.

이번 포스팅에서는 디컴파일러에 대해 알아보겠습니다.

 

컴파일러가 소스코드를 바이너리 결과물로 만드는 것이라면 디컴파일러는 바이너리 결과물로부터 소스코드를 복원하는 것을 말합니다. 즉 실행파일로부터 개발 소스코드를 추출해 낼 수 있습니다. 비록 개발자가 작성한 원본과 완벽하게 같은 것은 아니지만 역컴파일된 소스코드로 다시 컴파일을 할 수 있을 정도는 되기 때문에 EXE/DLL 상태의 어셈블리 파일을 분석하는데 매우 큰 도움을 받을 수 있습니다.

 

닷넷 디컴파일러로 가장 유명한 제품으로는 ".NET Reflector"가 있는데 유료로 전환되어 개인적으로 연구 및 학습을 위해 사용하기엔 부담이 아닐 수 없습니다. 여기서는 Telerik 사에서 개발한 무료 제품 "JustDecompile"을 설치하여 역컴파일 방법에 대해 알아보겠습니다.

 

먼저 아래와 같이 'telerik.com'에 접속합니다.

 

초기 화면에서 All Products 페이지로 이동합니다.

 

 

우측 하단의 FREE TOOLS에 있는 'JustDecompile'을 클릭하여 다운로드 페이지로 이동합니다.

 

'Downloan Now'를 클릭하여 프로그램을 다운로드 받은 후 설치 파일을 바로 실행해 줍니다.

그럼 아래와 같이 인스톨러가 나타나고 여기서 무료 역컴파일러인 'JustDecompile' 체크박스를 체크하고 NEXT 버튼을 클릭해 줍니다.

 

아래와 같이 디폴트 설정에서 라이선스 동의 체크박스만 체크해 주고 다음으로 넘어갑니다.

 

이어서 계정을 새로 생성해 주고 본인 이메일 계정에서 인증 받은 후 설치가 시작되면 아래와 같이 프로그램 다운로드 및 설치가 완료됩니다.

이제 바탕화면에 생성된 아이콘을 더블클릭하여 실행해 보겠습니다.

위에서 보시는 것처럼 매우 심플한 UI가 나타나는데 사용방법 또한 매우 간단합니다.

실행파일을 좌측 'Drag assemblies here' 위치에 드래그 앤 드롭하거나,

Open 메뉴에서 'File(s)...'를 클릭하여 EXE 파일을 열면

메타데이터로부터 정보를 가져와 프로그램에서 구현된 타입 정보와 그 내부에 구현된 멤버 목록을 좌측 패널에 트리 형태로 확인할 수 있습니다.

우리가 다운로드 받아 설치한 JustDecompile.exe 파일을 역컴파일러를 통해 열어보겠습니다.

좌측 패널에서 트리 화살표를 클릭하면 하위 트리가 확장되고 여기서 확인해 보고 싶은 파일을 클릭하면 우측 패널에 구현 소스코드가 방대하게 나타나는 것을 확인하실 수 있습니다.

 

구현하고자 하는 프로그램이 있다면 이전에 개발된 프로그램에서 필요한 기능들이 어떻게 구현되었는지 확인해 볼 수도 있고 본인이 개발한 프로그램이 있다면 역컴파일러를 돌려서 어떻게 소스코드를 재해석했는지 확인해 볼 수도 있습니다.

 

이상으로 디컴파일러에 대해 알아보았습니다.

감사합니다.

댓글