2013-02-19 3 views
1

Reflection을 사용하여 내부 클래스 변수의 값을 가져 오는 것을 방지 할 수 있습니까?.NET의 내부 필드에 대한 반영 액세스 방지

발신자가 암호를 알고있을 때만 액세스 할 수있는 내부 (VB의 Friend) 클래스 수준의 변수가 있습니다. 비밀번호를 사용하는이 변수를 노출하는 메소드가 있지만 Reflection을 사용하여 직접 변수에 액세스 할 수 있습니다. 이런 일이 일어나지 않도록 할 수 있습니까?

자세한 내용은이 변수를 해킹 할 수있는 코드가 플러그인으로 마스터 응용 프로그램에로드됩니다.

+1

귀하의 보호가 무엇이든, 그것을 우회하는 방법이 있습니다. –

답변

3

소스 코드 obfuscating에 의해 반사를 더 어렵게 만들 수는 있지만 불가능하지는 않습니다. 이것은 대부분 코드에서 사용 된 이름을 쉽게 추측하기 어려운 불명료 한 이름으로 변경합니다. 그러나 보증을 제공하지 않으며 결정된 프로그래머는 해당 이름을 찾아서 원하는 모든 것을 반영 할 수 있습니다.

또는 관리되지 않는 C++와 같은 비.NET 언어로 코드 전체 부분을 구현하여 반성을 불가능하게 만들 수 있습니다. 예를 들어, mscorlib의 경우 InternalGetHashCode 메서드는 not implemented in managed code이므로이 메서드가 어떻게 작동하는지 알 수는 없습니다.

PInvoke를 사용하여 관리 코드에서 관리되지 않는 기능을 호출 할 수 있습니다.

+0

나는 그 특정 클래스를 두 번째 어셈블리에 넣고 난독 화하는 것을 보았지만 리플렉션 프로듀서를 완벽하게 보호하지 못한다는 것을 깨달았다. –