Dotfuscator를 사용하여 Silverlight 응용 프로그램 난독 처리

페이지 업데이트 :
페이지 생성 날짜 :

닷푸스카터 소개

Dotfuscator는 .NET Framework로 작성된 응용 프로그램을 디스어셈블할 때 소스 코드를 읽기 어렵게 만드는 난독 처리기입니다. Dotfuscator는 Visual Studio와 함께 제공되는 무료 및 유료 정품 버전으로 제공됩니다.

무료 버전은 많은 제한된 기능과 Visual Studio가 실행 중이라는 가정에서만 사용할 수 있지만 Visual Studio가 설치된 모든 사용자가이를 사용할 수 있습니다. 유료 버전에는 무료 버전에서는 사용할 수없는 강력한 난독 화 기능이 많이 있지만 일반 대중이 감당하기 어려운 가격으로 제공되는 것이 성가실 수 있습니다.

Dotfuscator는 버전에 따라 기능, 가격 및 에디션이 다를 수 있으므로 자세한 내용은 다음 웹 사이트를 참조하십시오.

도트푸스카터

구문 분석된 코드

위에서 언급했듯이 .NET Framework로 만든 응용 프로그램은 디스어셈블을 통해 원본 소스 코드를 쉽게 읽을 수 있지만 실제로 그림과 같이 어셈블리 파일을 디스어셈블하면 네임스페이스, 클래스 이름 및 메서드 이름과 같은 대부분의 원본 소스 코드를 재현할 수 있습니다.

解析されたコード

난독화 절차

먼저 평소와 같이 Silverlight 응용 프로그램을 만들고 릴리스 빌드를 수행합니다. 여기서는 두 개의 단추만 배치하는 응용 프로그램을 만듭니다.

Release ビルド

프로젝트가 위치한 폴더의 Bin\Release 폴더에 . xap"는 Silverlight 응용 프로그램에서 사용되는 프로그램과 파일을 요약한 패키지 파일입니다.

XAP ファイル

실제로이 파일은 ZIP 파일로 압축되어 컴파일되므로 확장자는 ". 지퍼".

拡張子を .zip に変更

ZIP 파일로 변경되었습니다.

ZIP ファイル

파일을 열면 매니페스트 파일과 DLL이 포함됩니다. 이 DLL은 응용 프로그램으로 실행되는 프로그램의 컴파일된 버전입니다.

그건 그렇고, DLL 파일은 빌드 될 때 Release 폴더에도 배치되므로 이번에는이 파일을 난독 화합니다.

ZIP ファイルの中身

Visual Studio 메뉴에서 도구를 선택한 다음 선점형 Dotfuscator 및 분석을 선택합니다.

처음 시작할 때 "사용권 계약"대화 상자가 표시되므로 내용을주의 깊게 읽고 "예, 라이센스 계약에 동의합니다"를 선택한 다음 "확인"버튼을 클릭하십시오.

PreEmptive Dotfuscator And Analytics を選択

선점형 Dotfuscator 및 Analytics CE가 시작됩니다.

PreEmptive Dotfuscator And Analytics CE

왼쪽 트리에서 "입력"을 선택하고 "입력 추가"버튼을 클릭하십시오.

入力の追加

빌드하는 동안 생성한 DLL 파일을 선택합니다.

ビルドで生成した DLL ファイルを選択

추가한 DLL 파일을 선택하고 XAML 변환> 라이브러리 모드를 선택 취소합니다.

"라이브러리 모드"를 선택하면 public에 정의된 클래스와 메서드가 난독화되지 않습니다.

"XAML 변환"을 선택하면 XAML에 정의 된 클래스가 난독 화되지만 생성 방법에 따라 시작 오류가 발생하므로 발생하는 경우 선택을 취소하십시오.

「ライブラリ モード」「XAML の変換」のチェックを外す

기본적으로 모든 클래스, 메서드, 속성, 변수 이름은 난독화되지만, 직렬화로 인해 특정 네임스페이스나 클래스를 난독화하지 않으려면 왼쪽 트리에서 "이름 바꾸기"를 선택하고 "제외" 탭을 선택한 다음 대상 네임스페이스 또는 클래스를 확인합니다.

難読化の除外

기본 제공 규칙에서 Silverlight 및 WPF 사용자 정의 컨트롤의 필드가 선택되어 있는지 확인합니다. 이 옵션을 선택하면 UserControls 필드가 난독 처리되고 성공적으로 실행됩니다. 난독화 후에도 제대로 작동하는 것 같으면 선택을 취소할 수 있습니다.

Silverlight および WPF UserControls のフィールド

완료되면 도구 모음에서 "프로젝트 빌드" 단추를 클릭합니다.

プロジェクトのビルド

프로젝트에 변경 사항이 있는 경우 프로젝트 저장 확인 대화 상자가 표시되므로 "예"를 클릭하여 저장합니다.

プロジェクト保存確認ダイアログ

이 프로젝트는 ". xml" 파일에 저장됩니다. 난독 처리된 파일은 동일한 위치에 저장됩니다.

プロジェクト保存

빌드가 시작될 때 완료될 때까지 기다립니다. 프로그램이 클수록 빌드하는 데 시간이 오래 걸립니다. 그림처럼 보이면 빌드가 완료된 것입니다.

메시지 필드에는 빌드 진행률과 난독 처리 정도와 같은 간단한 결과가 표시됩니다.

ビルド完了

왼쪽의 트리에서 결과를 선택하면 클래스 및 메서드 이름이 변경된 방식에 대한 세부 정보를 볼 수 있습니다.

클래스 및 메서드 이름 아래에는 Dotfuscator 아이콘과 "a" 및 "b"와 같은 이름이 있으며, 이 이름은 난독 처리된 이름이 됩니다. 이러한 방식으로 클래스 이름이나 메서드 이름을 의미없는 이름으로 변경하면 디스어셈블하더라도 소스 코드의 내용을 읽기 어렵게 만들 수 있습니다.

難読化結果

난독화된 파일은 프로젝트 저장에 저장된 .xml 파일의 폴더에 있는 "Dotfuscated"라는 폴더에 생성됩니다. 난독 화 된 파일 외에도 "Map.xml"파일이 생성되었지만 이는 난독 화의 결과이며 사용되지 않습니다.

難読化したファイル

난독 처리된 파일을 디스어셈블하면 일부 클래스 및 메서드 이름이 "a" 또는 "b"로 변경된 것을 볼 수 있습니다.

이번에는 생성 된 기본 프로젝트가 거의 그대로 난독 화되어 있기 때문에 그렇게 난독 화되지 않은 이미지가 있다고 생각합니다 만, 프로젝트가 성장함에 따라 클래스 수 등이 증가하기 때문에 난독 화의 효과가 더 명확 해지는 것 같아요.

제쳐두고, . NET Framework 라이브러리와 관련이 있으며 예를 들어 Windows에 이미 설치된 어셈블리이므로 이름을 바꿀 필요가 없습니다.

難読化したコードの解析

DLL은 있는 그대로 사용하지 않으므로 XAP 파일로 패키지됩니다. 처음에 언급했듯이 XAP 파일은 ZIP 파일 확장자의 변경 일 뿐이므로 XAP 파일과 난독 화 된 DLL에 포함 된 파일을 수집하여 ZIP 파일을 만듭니다.

ZIP 파일 생성은 표준 OS 기능을 사용하여 수행 할 수 있습니다.

ファイルを ZIP 化

ZIP 파일이 생성됩니다.

ZIP ファイル

확장명이 '로 변경됩니다. XAP"를 선택하고 파일 이름이 다른 경우 원래 패키지 파일 이름으로 변경합니다.

배포 위치에 XAP 파일을 배치합니다.

XAP ファイルに変更

작동을 확인하고 제대로 작동하는지 확인하십시오.

시작되지 않으면 난독 화 된 코드를 줄여 정상적으로 작동 할 때까지 확인하십시오. Silverlight는 종종 XAML 관련 문제에 갇히게 됩니다.

動作確認

지침은 여기에 나열되어 있지 않지만 프로그램에 서명하려면 서명 연기 상태로 빌드하고 어셈블리를 난독 처리한 다음 다시 서명합니다. 서명하는 동안 난독 화해도 빌드시 첨부 된 서명 코드와 난독 화 후의 서명 코드가 일치하지 않으므로 시작할 수 없습니다.

이 기사에서는 무료 버전의 단계를 나열했지만 유료 버전을 사용하는 경우 더 복잡한 난독 화를 수행하고 분해 자체를 방지 할 수 있습니다. 그러나 난독화는 다양한 부작용을 일으킬 가능성이 있기 때문에 난독화를 할 때는 설계 초기부터 제대로 작동하는지 여부를 고려할 필요가 있습니다.