2009-12-13 3 views
2

저는 사용자를위한 간단한 키/라이센스 시스템을 찾고있었습니다. 일부는 불법 복제를 막기 위해 (사용자가 애플리케이션을 공유하지 못하도록) 나머지 절반은 우리가 보유한 '라이센스가 부여 된 사용자'의 수를 추적합니다. 나는 SO에 대해 몇 가지 좋은 제안을 이미 읽었지만 사람들이 30 일 평가 기준을 어떻게 구현했는지 궁금합니다.WinForms 응용 프로그램 보안 제안

날짜를 저장하고 매번 비교하거나 조금 더 복잡해지는 키를 생성합니까? 파일 삭제/레지스트리 제거가 비활성화되어서는 안됩니다.

나에게 머리를 뛸 수있는 구현 예가 있습니까? 아이러니하게도 우리 PM은 제 3 자 시스템에 라이센스를주기를 원하지 않습니다.

Windows Forms 응용 프로그램 용입니다.

답변

0

.NET을 실제로 보호 할 수 있는지 확신 할 수 없습니다. - 트릭을 수행하는 상용 솔루션이있을 수 있습니다. 그 이유는 (그것은 위라는 사람에 의해 이전했다 ) .NET 코드는 레드 게이트의 리플렉터 (머리 위로에 대한 감사 Jasonh) 루츠 Roeder 를 통해 볼 수있다. 그것을 다루는 가장 좋은 방법은 더 복잡한 것을 반영하는 코드 난독 화를 찾는 것입니다. 제가 알고있는 한 곳으로 당신을 가리킬 수 있습니다 - 무료로이 작업을 수행하십시오 - Phoenix - NtCore.Com.

C++에서 .NET 호스팅 환경을 만들고, 암호화 된 바이너리 이미지와 호스팅 환경을 메모리에서 언 버퍼링하는 것보다 더 밀교적인 솔루션이 될 것입니다. 실제로 이루어질 것입니다. 자신의 보호 계획을 약점이있을 수 있으므로 사용하지 마십시오.

누군가 한 번 말했다 - "무명 통해 보안"...이 도움이

희망, 안부, 톰.

+0

다른 측면에서 볼 때 커스텀 크래커는 다른 소프트웨어로부터 동일한 보호 방법으로 경험하지 않았기 때문에 커스텀 솔루션에 이익이 있습니다. 보호 기능을 현명하게 만들면 보호가 성공적으로 손상된 것처럼 보일 수 있지만 응용 프로그램의 도메인 기능의 특수/일반적인 경우에는 응용 프로그램이 일부 원하지 않는 동작을 할 수 있습니다. – TcKs

+0

@ TcKs : 매우 동의하지만 개인적으로 나 자신의 솔루션 개발에 위험을 감수하고 싶지는 않을 것입니다. 나는 무의식적으로 약점을 계획에 넣었습니다. 엄청난 양의 소프트웨어에 직렬 키 생성기를 제공하는 사이트를 살펴본 다음 원근감을 높일 것입니다. 크래커가 핵심이 무엇인지 결정할 수있는 방법을 찾으면 의심의 여지가 없습니다. – t0mm13b

+0

그것은 실제로 레드 게이트의 리플렉터입니다. :) – jasonh

0

두 가지 과제가 있습니다. i. 복사 된 앱이 어떻게 실행되지 않게합니까? ii. 사용자가 예방 계획을 무시하거나 우회하는 것을 방지하는 방법. 첫 번째 작업은 대개 사용자 시스템의 서명 (예 : 하드 드라이브 ID + 프로세서 ID + RAM 등)을 복사하여 시드/키로 사용하고 "집"을 호출하여 온라인으로 활성화하여 수행됩니다.

.Net에서 소스 코드를 추출하고 다시 컴파일하여 보호 시스템을 제외시킬 수 있기 때문에 두 번째 문제는 .Net에서 더 어렵습니다. 여기서 중요한 점은 사용자가 보호 장치를 제거하는 것보다 라이센스를 구입하는 것이 더 저렴하다는 것입니다. 대부분의 제품에서 사용자 지정 엔진을 사용하여 제품 라이브러리를 암호화하고 초기 런타임에 복사 방지 및 암호 해독이 포함 된 제품 라이브러리를 제안하는 것으로 충분할 수 있습니다.

0

필자는 우리가 실행 한 외부 서버에 중요한 기능 (예 : 데이터 저장,보고 또는 지불)을 넣고 사용자가 기능을 사용하려면이 서버에 로그인해야하는 프로젝트를 진행했습니다.

고객은 응용 프로그램을 로컬로 백업, 공유 또는 실행할 수 있지만이 중요한 기능에 액세스하려면 응용 프로그램에 암호를 입력하고 서버에 연결해야합니다.고객은 자신의 데이터를 변경할 수있는 암호를 알고 있으므로 다른 사람들과 암호를 공유하고 싶지 않습니다.

우리는 애플리케이션의 얼마나 많은 copes가 야생에 있는지 상관하지 않기 때문에 편리했습니다. 서버 연결 만 추적합니다. MAC 주소와 같은 머신 식별 데이터를 연결 데이터에 포함 시켰으므로 어떤 머신이 연결되어 있는지 추적 할 수 있습니다.

0

내 회사에서 OffByZero Cobalt software licensing solution for .NET을 판매하기 때문에이 말을하는 것이 아닙니다. 귀하의 PM은 소프트웨어 라이센싱이 매우 어렵다는 것을 알고 있어야하며, 자신의 롤업을하는 경우 가까운 미래에 지원할 것입니다.

Developing for Software Protection and Licensing; 솔루션을 선택하는 방법과 왜 응용 프로그램을 난독 화해야하는지, 그리고 코드를 구조화하기가 더 어려워 지도록 여러 가지 팁을 제공합니다.

특히 핵심 비즈니스가 아닌 복잡한 시스템을 구축하고 유지 관리하는 데 개발자의 시간을 소비하는 것이 중요하기 때문에 대다수의 기업이 소프트웨어 라이센싱을 아웃소싱해야한다는 점을 강조합니다.

중요한 점은 제품에 중요한 새로운 기능을 추가하거나 라이센스 시스템을 손상시키는 고대 버전의 Windows에서 발생하는 고유 한 사용 권한을 추적하는 것입니다.

관련 문제