2014-09-24 9 views
-1

에 대한 라이선스 제한을 적용하는 방법은 몇 달에 대한 연구와 지역 사회에서 도움을 필요로 한 질문입니다 내 고객이 살 수있는 판매용 제품인 Windows는 최종 고객을 위해 유용한 응용 프로그램 (.exe 파일)을 작성하는 데 사용합니다. 이는 대부분의 SDK 공급 업체에 대한 일반적인 사용 사례입니다.는 SDK 여기

내 고객이 SDK 사본을 다른 사람들과 공유 할 수 없도록 라이센스 구성표를 만들고 싶습니다. 그러나 최종 사용자 당 라이센스를 요청할 필요없이이 SDK를 사용하여 빌드 한 최종 응용 프로그램을 자유롭게 배포 할 수 있습니다.

필자는 과거에 올바른 라이센스 사용자 (시간 기반, 노드 잠금, 유동)가있는 경우에만 런타임에 소프트웨어가 작동하도록 제한하는 여러 가지 라이센스 체계를 작성했습니다. 그러나이 프로젝트는 링크 타임에 라이센스 검사가 필요합니다. 개발자가 자신의 코드를 .lib 파일에 링크하려고 시도하면이 라이센스 검사에서 유효한 라이센스가있는 경우에만 링커가 통과해야합니다.

그래서 사용자 지정 라이센스 검사 모듈을 호출 할 수있는 CL.exe (ms visual studio)에서 사용할 수있는 링커 후크가 있는지 궁금합니다.

최종 사용자가 최종 제품을 실행하는 데 라이센스가 필요하지 않은 것도 중요합니다.

사용 가능한 모든 링크 된 옵션을 조사했지만 유용하지 않은 항목을 조사했습니다.

+0

IPP (인텔 성능 프리미티브)가이 기능을 가지고 있다는 것을 모호하게 기억하고 있습니다. 유효한 라이센스가있을 때까지 링크하지 못하게합니다. 나는 그것으로 기웃 거리며 시도하고 그것이 어떻게 작동하는지 점검하려고 노력할 것이다. 아무도 이미 알고 있니? – kumaakh

답변

3

prooblem :

는 지금까지 내가 아는 한, 라이센스 집행은 MS 링커의 기능이 아닙니다. 그렇게해도 라이브러리 파일에는 알려진 정의가 있으므로 고객이 사용하지 않는 다른 링커를 사용하지 못하게 할 수는 없습니다.

라이브러리 배포에는 SDK에 문제가 있습니다. 라이브러리 기반 SDK에서는 고객에게 계정을 제공하지 않고도 멋진 응용 프로그램을 만드는 데 필요한 모든 것을 제공합니다. 개발자가 귀하가 제공 한 모든 것을 다른 사람에게 복사하는 것을 막을 수있는 방법은 없습니다. 그들이 당신에게 의지하게 만드는 유일한 생각은 당신이 그들을 제공 할 것이라는 지원과 보장입니다.

잠재적 인 솔루션

당신은 도서관에서 고객의 라이센스 정보를 저장하고, 그것에 대해 알릴 수 있습니다. Developpers는 라이센스를 여전히 채울 수 있지만 누출을 발견하고 고소 할 수 있음을 알게됩니다. 이것은 그들이 당신의 일을 나누는 것을 더 꺼리게 만듭니다.

배포 인프라가 모든 고객에 대해 고유 한 lib 파일을 생성 할 수 있어야한다는 어려움이 있습니다. 실용적인 관점에서 볼 때 두 개의 lib 파일을 사용하는 것이 좋습니다. 하나는 실제 라이브러리 용이고 다른 하나는 라이센스 정보 용 (암호화 된 라이센스 정보가 들어있는 전역 extern 변수의 정의가 들어 있습니다)입니다.

Windows에서는 한 단계 더 나아갈 수도 있습니다. exe 파일의 매니페스트 나 속성에 컨트롤 (저작권, 게시자, 공개 키 토큰 등)에 적합한 여러 공급 업체 특정 필드가 있습니다. 당신은 당신의 라이브러리에 포함 된 라이센스 정보로이 정보의 내용을 점검 할 수있는 라이센스 lib 파일의 생성과 라이브러리 기능의 첫 번째 호출에 대해이 정보를 요청할 수 있습니다.

추가 정보를 원하시면

1) 정적 데이터가 충분하지 않습니다 :

그냥 라이브러리 파일에서 정보를 가진 것만으로는 충분하지 않습니다. 귀하의 고객은 라이선스 정보를 더미 정보로 대체하거나 간단히 삭제할 수 있습니다. 따라서 특수 체크섬을 준수하는 방식으로 데이터를 암호화하는 것이 중요합니다. 그런 다음 라이브러리는 라이센스 데이터의 유효성을 제어하는 ​​첫 번째 단계 인 단일 제어 기능을 구현해야합니다.

2) 고객은 개발자와, 그래서 그들은 당신이 어떤 역 라이브러리를 설계하는 것을 방지하고 기능을 제어 패치

로 스마트입니까? 또는 사용하고 더미 라이센스 정보를 계산하는 체크섬을 찾으십시오.

결론

확실히 계획의이 종류를 시행하는 방법이 있습니다,하지만 그들은 당신을 위해 비싼 (추가 developpment, 복잡한 유통), 충분한 노력, 그것은을 비활성화 할 수 있습니다.

고객에게 너무 제약이있는 경우 다른 라이브러리를 사용하게됩니다.

내가 너라면, 두 번 생각해 보겠다. 강력한 도서관의 행복한 고객은 공급자에게 충성하는 경향이 있습니다. 특히 반응 형 지원이 제공된다면! 왜 그렇게 괴롭습니까? 시작부터 고객의 신뢰 관계를 구축하는 것이 어떻습니까?