Dotfuscator를 사용하여 만든 응용 프로그램 난독 처리
요약
.NET Framework 기반 응용 프로그램은 공통 중간 언어라고 하는 형식으로 만들어지기 때문에 디스어셈블리 도구 등을 사용하여 원본 소스 코드에 가까운 형식으로 읽을 수 있습니다. 이 섹션에서는 Visual Studio와 함께 제공되는 난독 화자인 Dotfuscator를 난독 화하여 클래스 및 메서드 이름을 쉽게 읽을 수 없는 형식으로 난독 화하는 방법에 대해 설명합니다.
여기서는 Visual Studio 2010을 사용하여 이에 대해 이야기하고 있지만 2005 년과 2008 년에도 Dotfuscator를 사용할 수 있습니다.
운영 환경
지원되는 비주얼 스튜디오 버전
- 2005
- 2008
- 2010
비주얼 스튜디오 버전 확인
- 2005
- 2008
- 2010
물질
도트퓨세이터 소개
Dotfuscator는 .NET Framework로 작성된 응용 프로그램에서 디스어셈블될 때 소스 코드를 읽기 어렵게 만드는 난독화 도구입니다. Dotfuscator는 무료 및 유료로 Visual Studio와 함께 제공됩니다.
무료 버전은 많은 기능이 제한되거나 Visual Studio가 시작되지 않는 한 사용할 수 없지만 Visual Studio가 설치되어 있는 한 누구나 사용할 수 있습니다. 유료 버전에는 무료 버전에서 찾을 수없는 많은 강력한 난독 화 기능이 있지만 일반 대중이 감당하기 어려운 가격으로 제공됩니다.
Dotfuscator는 버전에 따라 기능, 가격 및 에디션이 다르므로 자세한 내용은 다음 홈페이지를 참조하십시오.
난독화 절차
앞서 .NET Framework로 만든 응용 프로그램은 원래 소스 코드를 디스어셈블하고 쉽게 읽을 수 있다고 언급했지만 실제 상황은 오른쪽 그림과 같이 exe 파일을 디스 어셈블하면 네임 스페이스, 클래스 이름, 메서드 이름 등과 같은 원본 소스 코드를 거의 재현 할 수 있다는 것입니다.
이러한 이름을 혼동하고 난독 화시키는 단계를 설명합니다.
Visual Studio에서 응용 프로그램을 만들고 exe 파일을 만드는 것은 일반적인 방법과 정확히 동일합니다.
exe 파일을 빌드하고 만든 후 Visual Studio 메뉴에서 도구를 선택한 다음 Dotfuscator 소프트웨어 서비스를 선택합니다.
처음 시작하면 오른쪽 그림과 같이 "사용권 계약" 대화 상자가 표시되므로 내용을 주의 깊게 읽고 "예, 사용권 계약에 동의합니다"를 선택하고 "확인" 단추를 클릭합니다.
Dotfuscator 소프트웨어 서비스가 시작됩니다.
난독 화 할 exe (또는 dll 파일)가 현재 열려있는 프로젝트에서 가져온 것일 필요는 없습니다.
왼쪽의 트리에서 입력 어셈블리를 선택하고 오른쪽의 입력 어셈블리를 클릭하여 ... 단추를 클릭합니다.
난독 화 할 exe 파일을 선택하십시오.
선택한 exe 파일이 목록에 추가됩니다. 여러 파일을 난독 화하려면 두 번째 줄 뒤에 있는 "..." 버튼을 클릭하여 파일을 추가합니다.
난독 화 할 exe를 선택했으면 도구 모음에서 프로젝트 빌드 버튼을 클릭하십시오.
프로젝트에 변경 사항이 있으면 프로젝트 저장 확인 대화 상자가 표시되므로 "예"를 클릭하여 저장하십시오.
이 프로젝트를 "라고 합니다. xml" 파일. 난독 화 된 exe 파일도 동일한 위치에 저장되므로 .xml 파일을 모든 폴더에 저장하십시오.
빌드가 시작되고 완료될 때까지 대기합니다. 프로그램이 클수록 빌드하는 데 더 오래 걸립니다. 오른쪽 그림처럼 보이면 빌드가 완료됩니다.
message 필드에는 빌드 진행률 및 난독 화 된 방법과 같은 간단한 결과가 표시됩니다.
왼쪽의 트리에서 "결과"를 선택하면 클래스 및 메서드 이름이 어떻게 변경되었는지에 대한 세부 정보를 볼 수 있습니다.
클래스 및 메서드 이름 아래에는 Dotfuscator 아이콘과 난독 화 된 이름 인 "a"또는 "b"와 같은 이름이 있습니다. 클래스 이름이나 메서드 이름을 이와 같이 의미없는 이름으로 변경하면 소스 코드의 내용이 디스어셈블되어도 읽기 어렵게 만들 수 있습니다.
난독 화 된 exe 파일은 "Dotfuscated"라.xml Save Project에 저장된 파일 폴더에 만들어지고 그 안에 만들어집니다. exe 파일 외에도 "Map .xml"파일이 만들어졌지만 난독 화의 결과이므로 사용해서는 안됩니다.
난독 화 된 exes는 그대로 실행하고 사용할 수 있습니다. 그러나 오른쪽 그림과 같이 알 수없는 오류로 인해 시작할 수없는 경우가 있습니다.
이번에는 WPF에서 응용 프로그램을 작성했지만 표시 할 첫 번째 창의 XAML 파일이 문자열로 지정되어 있기 때문에 난독 화로 인한 이름 변경으로 인해 참조가 손실되어 오류가 발생합니다.
Windows Form 응용 프로그램은 From 클래스를 직접 참조하므로 난독 처리된 경우에도 오류 없이 실행할 수 있습니다. 그러나 클래스 이름, 열거 형 등을 이름으로 지정하는 경우 동일한 오류가 발생할 가능성이 있으므로 주의해야합니다.
클래스 등을 난독 화하지 않으려면 Dotfuscator의 왼쪽에있는 트리에서 이름 바꾸기를 선택하고 중간 탭에서 제외를 선택하십시오.
각 네임 스페이스, 클래스 이름 등이 오른쪽 목록에 표시되므로 난독 화하지 않으려는 항목을 확인하십시오.
여기서는 먼저 표시 할 창의 클래스 이름을 변경하고 싶지 않으므로 "MainWindow"를 확인합니다.
빌드를 수행하면 MainWindows의 클래스 이름 아래에 변경된 이름이 없음을 알 수 있습니다. (앱 클래스가 "a"로 변환되었습니다.)
난독 화 된 exe 파일을 실행하면 창이 올바르게 표시되는 것을 볼 수 있습니다.
난독 화 된 exe 파일을 디스 어셈블하면 클래스 이름과 메서드 이름이 "a"또는 "b"로 올바르게 변경되었음을 알 수 있습니다.
그러나 제쳐두고. 클래스 이름과 같은 NET Framework 라이브러리는 Windows 및 다른 곳에 이미 설치된 어셈블리이므로 이름을 변경할 수 없습니다.
이번에는 생성 된 기본 프로젝트를 그대로 난독 화했기 때문에 너무 난독 화되지 않은 이미지가 있다고 생각하지만 프로젝트가 성장함에 따라 클래스 수 등이 증가하기 때문에 난독 화의 효과가 분명해진다고 생각합니다.
또한 이번에는 무료 버전에 절차를 포함했지만 유료 버전은보다 복잡한 난독 화를 허용하고 분해 자체를 방지합니다. 그러나 난독 화는 다양한 부작용과 발생할 가능성이 있으므로 난독 화를 수행 할 때 설계 초기부터 제대로 작동하는지 여부를 고려하면서 난독 화해야합니다.