다음을 통해 공유


사용자 지정 특성을 사용한 선언적 난독 처리

.NET Framework 버전 2.0에서는 구성 파일을 설정하지 않고 쉽게 어셈블리를 자동으로 난독 처리하도록 디자인된 새로운 사용자 지정 특성 두 가지를 제공합니다. 이 절에서는 Dotfuscator에서 이러한 특성을 사용하는 방법에 대해 간략하게 설명합니다. 사용자 지정 특성과 개발 언어로 이러한 사용자 지정 특성을 적용하는 방법에 익숙하다는 가정 하에 설명합니다.

System.Reflection.ObfuscateAssemblyAttribute

이 특성은 Dotfuscator에 어셈블리를 전체적으로 난독 처리하는 방법을 지정하기 위해 어셈블리 수준에서 사용됩니다. AssemblyIsPrivate 속성을 false로 설정하면 어셈블리가 라이브러리 모드로 실행됩니다. true로 설정하면 어셈블리가 라이브러리 모드로 실행되지 않고 공용 형식과 멤버를 포함하여 최대한 많은 이름을 바꿉니다.

System.Reflection.ObfuscationAttribute

이 특성은 형식과 해당 멤버에 사용되며 Dotfuscator에서 항목을 난독 처리하는 방법을 지정합니다.

기능 속성

이 문자열 속성의 기본값은 "all"입니다. 이 속성을 통해 각각 다른 기능 문자열을 사용하여 여러 ObfuscationAttribute로 항목에 태그를 지정하여 여러 개의 난독 처리 변환을 독립적으로 구성할 수 있습니다.

Dotfuscator에서는 "default" 및 "all" 기능 문자열을 "renaming"에 매핑합니다.

Dotfuscator에서 인식하는 다른 기능 문자열 목록은 다음과 같습니다.

기능 문자열 작업
renaming 이름 바꾸기 구성
controlflow 제어 흐름 난독 처리 구성
stringencryption 문자열 암호화 구성
trigger 주석이 추가된 항목을 진입점으로 표시하여 잘라내기 구성
conditionalinclude 주석이 추가된 항목을 조건부로 포함하여 잘라내기 구성

필요한 경우 설정 탭에서 "기능 맵 문자열" 속성 시트를 사용하여 다른 기능 문자열을 "renaming"에 매핑할 수 있습니다.

Dotfuscator에서 인식할 수 없는 기능 문자열을 포함하는 특성은 무시됩니다.

제외 속성

이 부울 속성의 기본값은 True입니다. True이면 기능 속성에 의해 암시된 변환에서 태그가 지정된 항목이 제외되고, False이면 태그가 지정된 항목이 포함됩니다.

현재 버전의 Dotfuscator에서는 지정된 변환에 대해 제외 속성 값 중 하나를 지원합니다. 지원되지 않는 제외 값이 있는 규칙은 무시됩니다. 요약한 목록은 다음과 같습니다.

기능 문자열 지원되는 제외 값
renaming True
controlflow True
stringencryption False
trigger False
conditionalinclude False

ApplyToMembers 속성

이 부울 속성의 기본값은 True입니다. 어셈블리 또는 형식에 특성이 적용될 때 값이 True이면 작업이 선택한 형식의 모든 멤버(중첩 형식 포함)에도 적용됩니다. False이면 형식에만 작업이 적용되고 해당 멤버나 중첩된 형식에는 적용되지 않습니다.

선언적 난독 처리 사용 또는 사용 안 함

Dotfuscator에서는 모든 입력 어셈블리에 대해 선언적 난독 처리를 설정 또는 해제할 수 있습니다. 선언적 난독 처리를 사용하지 않으면 난독 처리와 관련된 사용자 지정 특성이 무시됩니다. 특정 어셈블리에 대해서만 해제할 수도 있습니다.

선언적 난독 처리 특성 제거

처리가 완료되면 Dotfuscator에서 난독 처리 특성을 제거할 수 있으므로 출력 어셈블리에 난독 처리된 방법에 대한 단서가 포함되지 않습니다. 두 가지 선언적 난독 처리 특성에는 기본값이 true인 "StripAfterObfuscation"이라는 부울 속성이 포함됩니다.

또한 Dotfuscator에는 난독 처리할 때 StripAfterObfuscation 속성 값과 상호 작용하는 구성 설정이 있습니다.

선언적 난독 처리 특성 제거에 영향을 주는 설정과 이러한 설정이 상호 작용하는 방법이 아래 표에 요약되어 있습니다.

특성 유지 여부 특성 제거 여부 특성의 StripAfterObfuscation 속성 결과
True 또는 False 특성 제거
아니요 True 특성 제거
아니요 False 특성 유지
아니요 True 또는 False 특성 제거
아니요 아니요 True 또는 False 특성 유지

기능 맵 문자열 사용

Dotfuscator에서는 난독 처리 특성의 기능 속성에 포함된 값을 Dotfuscator에서 인식하는 기능 문자열에 매핑할 수 있습니다.

예를 들어, "testmode"라는 기능을 참조하는 난독 처리 특성을 사용하여 응용 프로그램에 주석을 추가할 수 있습니다. Dotfuscator에서는 기본적으로 이 기능 문자열을 인식하지 못하므로 특성이 무시됩니다. 나중에 Dotfuscator에서 이러한 특성을 사용하여 이름 바꾸기 및 제어 흐름 난독 처리를 구성하려면 기능 문자열 "testmode"를 Dotfuscator에서 기본 제공되는 "renaming" 및 "controlflow" 문자열에 매핑할 수 있습니다.

© 2002-2007 PreEmptive Solutions. All rights reserved.