2009-10-22 2 views
1

누군가가 .NET에서 내 구성 요소 DLL을 보호하는 최선의 방법을 말할 수 있습니까?다른 프로그래머가 내 어셈블리를 래핑하지 못하게하려면 어떻게합니까?

공개적으로 사용할 수있는 몇 가지 DLL 구성 요소를 작성했습니다. 그들은 그에 따라 면허가 부여 될 것이지만 나는 아무도 그들의 솔루션 내에서 구성 요소를 불법적으로 사용하지 않도록 프로그램 적으로 확인하고 싶다.

아이디어가 있으십니까?

+3

'불법적으로'정의하십시오. – pyrocumulus

+2

기본적으로 DLL에 DRM을 구현하는 방법을 묻는 것처럼 보입니다. –

+0

예, DRM 스타일의 동등 물이 본질적으로 제가 생각하는 것 같습니다. –

답변

1

코드가 이미 난독 화되었으므로 메소드가 호출되기 전에 inbuilt 클래스를 라이센스 키로 인스턴스화 할 수 있습니다. 키가 유효하지 않거나 존재하지 않으면 메시지 상자를 표시하거나 오류/예외를 반환 할 수 있습니다. 최종 사용자가 어셈블리를 불법적으로 사용하지 못하도록하기 위해 이전 게시물에서 제안한 것처럼 이것이 수행되는 위치의 예가 많이 있습니다 (Xceed.com 체크 아웃). 그것을 완전히 막지는 마라. 충분한 시간과 인센티브가 주어지면 어떤 것이 든 부러 질 수 있습니다.

+0

구현 사례가 있습니까? codeproject 등에서 아무 것도 볼 수 없습니다. 라이센스 키가 합법적인지 확인하기 위해 적어도 확인하면 안심할 수 있습니다. –

+0

아무 것도 없지만 구현하기가 쉽습니다. a) algo를 클래스로 확인하는 사용자 지정 라이센스를 구현합니다. b) 모든 클래스가 클래스에서 파생되었는지 확인하십시오. 구현하는 데 드는 노력의 양을 고려할 때, 사람들을 괴롭 히려는 시도가 꽤있을 수 있습니다. :). – ivymike

+0

알겠습니다. 감사합니다. 이것도 살펴 보겠습니다. 나는 이것이 dll을 사용하는 것에 대한 접근이 내가 제공 한 라이센스 키 등을 확실히 지키도록 요구할 것이라고 본질적으로 생각한다. –

3

코드를 난독 화하는 것이 가장 좋은 방법입니다. 이것은 100 % 안전하지 않으며 리버스 엔지니어링 될 수 있습니다. dotfuscator

좋은 하나입니다.

+0

코드가 이미 혼란 상태이며 사용권 계약이 적용됩니다. 내가 보호하고 싶은 문제는 구성 요소 라이브러리를 사용하여 라이선스 계약에 위배되는 솔루션을 제공하는 다른 개발자들입니다. 나는 그것들이 그들의 책임이며 내가 그들을 쫓아 야한다는 것을 알았지 만 더 어렵게하기 위해 취할 수있는 더 많은 조치가 있는지 알고 싶었습니다. –

1

phoenix는 반사경과 같은 도구를 통해 여전히 디 컴파일 될 수 있으므로 코드를 완전히 보호 할 수있는 방법이 없다고 말했습니다.

이러한 도구 중 하나는 Dotfuscator입니다.

4

사람들이 기술 수준에서 일하는 것을 막으려 고 시도하면 리버스 엔지니어링을 통해 막을 수있는 노력을 기울일 것입니다 (난독 화 코드로 인해 코드가 멈추지 않고 속도가 느려집니다). 클린 룸 설계 등. 최선의 방법은 귀하의 도서관 이용 약관을 라이센스를 받고있는 사람들에게 보강하고, 이용 약관을 시행 할 법적 권리를 유지하는 것입니다.

+0

나는 풍자적 인 대답으로 회신하려고했다. "[복제 방지 또는 DRM의 어떤 형태가 무의미한지를 말하는 Stackableflow의 진부한 답변]"하지만 당신은 저를 때렸습니다. – mackenir

2

"배포하지 않음"으로 짧게 지정하면 무단 액세스를 방지 할 수있는 100 % 확실한 방법이 없습니다.

하드웨어 또는 소프트웨어 라이센스 장치를 살펴볼 수 있습니다. 코드 전체에 라이센스 검사를 뿌리고 장치가 없으면 모든 것을 중단하십시오.

또 다른 아이디어는 어셈블리의 모든 유형을 internal으로 선언하고 기본 응용 프로그램 EXE를 InternalsVisibleTo 어셈블리 특성이있는 friend 어셈블리로 설정하는 것입니다. 이것은 일반적으로 내부 구성원의 단위 테스트에 사용되며 실제로 안전 할 것이라고는 전혀 알지 못합니다. 이렇게하면 사람들이 어셈블리를 해체하는 것을 막을 수 없으므로 난독 화하고 싶을 수도 있습니다. 라이브러리를 판매하고 라이선스 고객 만 사용할 수 있도록하려는 경우 전혀 작동하지 않습니다. 왜냐하면 모든 라이브러리에 사용자 정의 빌드를 제공해야하기 때문입니다. 고객).

+0

감사합니다. 좀 더 살펴 보겠습니다. 건배. –