문제

사용자 정의 컨트롤, 확장 기능 및 기타 항목이 포함된 .NET DLL(C#/VB)이 있습니다.

나에게만 제공되었으면 좋겠습니다.DLL에 대한 무단 액세스를 제한할 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

가장 좋은 옵션은 Anton이 지적한 대로 DLL을 압축/암호화/난독화하는 것입니다.그리고 아무도 그것을 풀기 위한 모든 번거로움을 겪지 않도록 기도하십시오.

이에 대한 일반적인 용어는 단순히 "패킹"입니다.

이것이 f.ex Sony의 게임 개발자가 하는 일입니다. 시큐롬.

그러나 모든 포장 프로그램에는 동일한 단점이 있습니다.

  1. 리버스 엔지니어링이 가능하며 암호화 키는 바이너리에 내장되어야 합니다.
  2. 일반적으로 비용이 많이 들고 그렇지 않은 경우(UPX) 쉽게 포장을 풀 수 있습니다.
  3. 압축 풀기 과정에서 플랫폼 비호환성 문제가 발생할 수 있습니다.
  4. 압축된 바이너리는 안티 바이러스를 놀라게 하는 경향이 있습니다.

패커를 사용하는 회사는 일반적으로 생각할 수 있는 모든 컴퓨터에서 실행될 수 있어야 하는 바이너리를 제공합니다.정말로 의도했다면 고유 키로 배송된 모든 단일 dll을 암호화한 다음 암호 해독 단계에서 일부 도전-응답 마법을 위해 인터넷 액세스를 통해 실행하도록 요구할 수 있을 것 같습니다.어쨌든 과잉입니다.

자신만의 패커를 만들 수도 있지만 제 말을 믿으세요.당신은 거기 가고 싶지 않아요 ;)

간단히 말해서, 당신이 원하는 것은 대기업들에게도 달성하기가 쉽지 않습니다.SecuROM 게임이 PirateBay에 표시되는 데 얼마나 걸리나요?따라서 당신이 할 수 있는 유일한 일은 "기준을 높이는 것"이며, 훌륭한 리버스 엔지니어의 눈에 띄지 않기를 바라는 것입니다.

마지막으로, 자신이 무엇을 하고 있는지 알아보세요.당신에게 그만한 가치가 있습니까?DLL을 압축을 푼 상태로 그대로 배송했다고 가정해 보겠습니다.사람들은 그것을 사용하기 위해 여전히 리버스 엔지니어링이 필요할 것입니다.어쨌든 문서화되지 않은 타사 라이브러리를 사용하는 사람은 누구입니까?나는 광기의 순간에 한두 번만 그렇게했습니다.

다른 팁

글쎄요, 애초에 어셈블리를 재배포하지 마세요.조립이 완료되자마자 누구나 사용할 수 있습니다.당신은 이것을 더 어렵게 만들 수 있습니다 난독화 그러나 "진입점"은 여전히 ​​존재하며 사용할 수 있습니다.

이론적으로는 다음을 사용하여 뭔가를 할 수 있습니다. 카스, 그러나 이것이 가능하다고 특별히 확신하지는 않습니다.

아마도 라이센스/복사 보호 도구를 사용하여 DLL을 변경할 수 있습니다. 발신자 내부에서 필요한 라이센스 번호를 제공합니다.

이것은 완전히 불가능합니다. 코드를 실행하려면 실행 가능해야합니다. 수표, 포장, 암호화 키, 워치 독, 모니터, 소장 및 다양한 라이센스 체계를 입력 할 수 있지만, 하루가 끝나면 코드가 작동하면 사용할 수 있도록 잠금을 해제해야합니다.

이것이 DRM이 작동하지 않는 이유입니다. 당신은 X를 보호하고 싶지만 다른 사람이 그것을 보길 원합니다. 문제는 X를보고 싶지 않은 사람이며 X를 사용하고 싶은 사람은 어느 정도 수준에서, 같은 사람.

나는 FSF 회원이 된 타사 라이센스 코드 (내가 합법적 인 사용자가 아니었을 때, 내가 합법적 인 사용자가 아니었다)를 다루는 데 어려움을 겪었다. 다른 사람의 제한을 중심으로 일할 시간의 가치가 없으며, 그들을 다루는 데 시간의 가치가 없습니다. 그들의 코드는 그다지 특별한 것이 아닙니다.

어셈블리 이름을 강력하게 지정하려면 다음을 사용하는 것이 좋습니다. 게시자IdentityPermissionAttribute.이를 DLL에 추가하면 올바른 게시자 키로 서명된 어셈블리만 해당 메서드나 클래스를 호출할 수 있습니다.

이는 무료이며 .NET 프레임워크에 내장되어 있습니다.추가 기능(예: 다른 개발자에게 DLL 라이선스를 부여하는 기능)이 필요한 경우 당사 도구와 같은 전문적인 수준의 복사 방지 도구를 고려하십시오. DeployLX 라이센스.

발신자가 귀하인지 확인하려면 DLL에 수표를 추가해야합니다. 그러나 그것은 다른 도전을 제기합니다.

당신이 당신이 DLL에 있다는 것을 어떻게 증명합니까? (현재 사용자 이름과 같이 더 간단한 것을 확인할 수 있지만 완벽하지는 않습니다).

EXE 파일이 인증서에 의해 서명되도록 요구할 수 있습니다.

라이센스 인프라를 확인해야합니다. 구현 방법은 모르겠지만 .LICX 파일을 만들어 사용한 다음 빌드 프로세스는 LC.EXE 도구를 사용하여 라이센스를 포함시키는 작업을 수행한다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top