다음을 통해 공유


리플렉션 및 동적 클래스 로드

리플렉션 및 동적 클래스 로드는 .NET 아키텍처의 매우 강력한 도구입니다. 이 정도 수준의 런타임 프로그램 사용자 지정이 적용되면 Dotfuscator는 주어진 프로그램으로 로드된 모든 형식의 이름을 바꿔도 되는지 확실히 알 수 없습니다.

다음 (C#) 코드 조각을 참조하십시오.

public object GetNewType() { 
   Type type = Type.GetType( GetUserInputString(), true ); 
   object newInstance = Activator.CreateInstance( type ); 
   return newInstance; 
} 

이 코드는 형식을 이름별로 로드하고 동적으로 인스턴스화합니다. 사용자별 문자열 입력 또는 런타임 데이터베이스, 다른 프로그램 등에서도 이름이 만들어집니다.

Dotfuscator는 사용자가 입력할 형식 이름을 예상할 수 없습니다. 해결 방법은 로드할 수 있는 모든 형식의 이름을 제외하는 것입니다. 이 때 메서드 및 필드 이름 바꾸기는 수행 가능합니다. 이러한 경우 수동 사용자 구성과 Dotfuscator를 사용하여 난독 처리할 응용 프로그램에 대한 지식이 중요한 역할을 합니다.

문제가 덜 심각한 경우에는 다음과 같이 약간 변형을 시도해 보십시오.

public MyInterface GetNewType() { 
   Type type = Type.GetType( GetUserInputString(), true ); 
   object newInstance = Activator.CreateInstance( type ); 
   return newInstance as MyInterface; 
} 

이제 MyInterface를 구현하는 일부 형식만 제외하면 됩니다.

© 2002-2007 PreEmptive Solutions. All rights reserved.