2012-08-01 4 views
9

고객에게 판매하기 전에 라이센스가 필요한 프로그램을 만들었습니다. 확신 할 수 없기 때문에 상업용 라이센스 소프트웨어의 비용을 최소한 절감 할 수 있으므로 구입하지 않으려합니다. .Net 실시간 소프트웨어 라이선스

그래서 나는 다음과 같은 논리 라이선스 기능을 구현하는 방법에 대한 조언을 찾고 있어요 :

  • 때마다 응용 프로그램이 시작이 (아무 라이센스 정보가 라이센스를 제외하고 userside에 저장되지 않습니다 키는 서버 측에서 검증 된 모든 라이센스 번호).
  • 하나의 라이센스 키로 동시에 실행되는 응용 프로그램은 하나뿐입니다.

간단한 디 컴파일/디스 어셈블에서 내 프로그램을 보호하고 라이센스를 확인하기 위해 호출을 제거하는 방법은 무엇입니까? 또는 각 라이센스에 대해 응답을 할 자체 서버를 만드시겠습니까? 그러한 보안은 일반적으로 어떻게 이루어 집니까?

무료 SDK 등을 검색했지만 찾을 수 없습니다. 도와 줘서 정말 고마워!

P.S : 시스템을 "파괴 할 수 없게 만들려는 것이 아닙니다."하지만 프로그램 복사본에 $ 5.10을 지불하는 것보다 더 많은 비용이 드는 보호를 받고 싶습니다.

P.P.S : 나쁜 영어로 죄송합니다.

+2

사용자가 인터넷에 연결되어있을 때만 응용 프로그램을 시작할 수 있다고 생각하십니까? 이것은 많은 랩탑/모바일 사용자와 연결 상태가 좋지 않은 사람을 배제 할 수 있습니다. 또한, 지금까지 무엇을 시도 했습니까? 귀하의 질문은 연구가 부족하다는 것을 보여 주며, 종종 질문이 닫히거나 무시되는 결과를 낳습니다. –

+3

http://msdn.microsoft.com/en-us/magazine/cc164108.aspx에서는 어셈블리의 이름을 지정하면 어셈블리가 손상되는 것을 방지 할 수 있습니다. 웹 서비스의 경우 응답을 받기 전에 클라이언트가 유효성을 검사해야하는 서버 인증서를 사용해야합니다. 그러나 이렇게하면 모든 오프라인 사용자가이 기능을 사용할 수 없게됩니다. – Ramesh

+0

죄송합니다. 질문이 명확하다고 생각했습니다. 지금까지 저는 라이센스를 확인하기 위해 webservice와 클라이언트를 작성했습니다. 제대로 작동하지만 간단히 말해서 방어력을 떨어 뜨리는 것은 간단합니다 ... 누군가가 이것을 보호 할 방법에 대한 조언을 줄 수 있는지 물었습니다. 내 앱이 온라인 게임 자동화가되면 사용자는 모두 인터넷 연결이 원활해야하므로 실시간 확인에 문제가 없습니다. 난독 화는 괜찮지 만, 난독 처리 후에도 여전히 디버거에서 이벤트를 잡아서 건너 뛸 수 있습니다. – CodeDemen

답변

2

간단하게 내 프로그램을 보호하는 방법은 디 컴파일/디스 어셈블 링을하고 라이센스를 확인하기 위해 전화를 제거하는 것입니다. 또는 각 라이센스에 대한 응답을 적용 할 자체 서버를 만드시겠습니까? 이러한 보안은 일반적으로 어떻게 이루어 집니까?

혼란스러운 라이센스 및 난독 화입니다. 위의 문제를 방지하려면 obfuscator를 사용하여 exe 및 dll을 난독 화해야합니다.

나는 적어도 상용 라이센스 소프트웨어의 비용을 얻게 될 것이라 확신하지 않기 때문에 구입하고 싶지 않습니다.

IMHO 라이센스 스키마를 처음부터 다시 개발하는 것보다 실제 소프트웨어에 집중하고 시간을 보내는 것이 훨씬 낫습니다.

유료 솔루션을 사용하는 경우 CryptoLicensing (라이센스 및 복사 방지용) 및 Crypto Obfuscator (난독 화 및 코드 보호용)을 살펴보십시오.

면책 조항 : 저는 위에서 언급 한 제품의 개발자 인 LogicNP Software에서 근무하고 있습니다.

+0

IMO, Obfuscation은 사람들이 어셈블리 코드를보고 과거에 exes를 패치 한 것처럼 도움이되지 않습니다. 난독 화는 논리를 이해하기가 조금 더 어려워 질 것입니다. – Ramesh

+0

나는 비슷한 게시물을 쓰고 있었지만 훨씬 빨랐습니다. 이것에 동의하고 누구도 바퀴를, 특히 보안 영역에서 다시 발명하면 안된다. –

+0

예, 100 % 균열 방지는 없지만, 약간의 보호가 더 나은 것은 아닙니다! – logicnp

1

그것은 당신의 응용 프로그램이 무엇을하고 있는지에 따라 달라집니다

(다른 사람의 게시물 ???에 말씀 드릴 수 없습니다 죄송합니다).

저는 현재 당신과 같은 문제에 직면 해 있습니다. 로그인 시스템을 사용하고 데이터베이스의 내용을 가져 와서 비교하면됩니다. 없는 경우 앱을 실행하지 마십시오. 아니, 더 필요해, 응용 프로그램이 내 데이터베이스에 의존하고 그것 없이는 쓸모가 없다.

그런 다음 쿼리를 보거나 실제로 전체 제품을 다시 작성하여 데이터베이스가 어떻게 생겼는지 파악할 수 있습니다. 앱 보안에 거의 투자하지 않을 것입니다. 유일한 보호 기능은 내 서버의 데이터를 표시하지 않는 것입니다.

+1

여기서 해결책은 매우 간단합니다. 인증 지원 기능을 갖춘 웹 서비스이지만 데이터베이스에 직접 쿼리를 보내지 마십시오. 그런 다음 라이센스 키 (또는 로그인 비밀번호 - 원하는대로) 및 g 그로부터의 응답은 - 당신이 쓸 수있는 약 2 개의 클래스가 더 있습니다. 아무도 당신에게 데이터베이스 데이터에 대한 액세스 권한을 부여하지 않을 것입니다. – CodeDemen

+0

@ CodeDemen이 점에 대해 멋진 튜토리얼/설명을 가르쳐 주시겠습니까? – AmazingDreams

+1

문제가 없습니다! [WS Auth example] (http://www.codeproject.com/Articles/4398/Authentication-for-Web-Services-using-SOAP-headers) 및 [WS DB Connectivity] (http : //www.c-sharpcorner .com/uploadfile/raj1979/database-connectivity-using-webservice /) – CodeDemen

관련 문제