2012-05-11 2 views
13

매우 큰 문제가 있습니다. 그것이 "소프트웨어 라이센스를 만드는 방법"입니다. 사용자가이 라이센스 키를 입력 할 때 12345YWJava 소프트웨어 라이센스를 만드는 방법은 무엇입니까?

이 소프트웨어는 그 소프트웨어를 사용할 수 있도록해야한다 -

확인이 내 라이센스 키라고 생각합니다. 좋습니다. 일단 사용자가 라이센스 키를 입력하면 소프트웨어에서 유효한 키를 입력했음을 기억해야합니다. (다음부터 라이센스 대화 상자를 표시 할 필요가 없기 때문에) 내 질문은 어떻게 할 수 있습니까? 사용자가 라이선스를 입력했음을 기억하는 소프트웨어? Windows 기반 앱에서는 대부분 Windows 레지스트리 항목을 입력합니다. 나는 똑같이 할 수 있니? (그렇다면 우분투와 Mac은 어떻습니까?)

나는 .txt 파일을 작성하여 소프트웨어에서 그것을 읽을 수 있고 라이센스가 입력되었는지 여부를 알았습니다. 그러나 그것은 내가 생각할 수있는 가장 안전한 시스템입니다.

위의 라이센스 키를 입력하면 어떻게 소프트웨어를 기억하게 할 수 있습니까? 나도 코드 예제를 줄 수 있다면 정말 기쁩니다 (예 : Windows 레지스트리의 경우 레지스트리 편집 방법을 모르겠습니다). 제발 도와주세요 ...

+4

소프트웨어를 "기억"하게 만드는 것은 쉽습니다. 그것을 해킹하는 것이 중요하지 않은 것입니다 ... – Mysticial

+0

license4j 어플리케이션을 사용하면 도움이 될 것입니다 ... youtube에서 비디오를 확인하십시오 –

답변

18

라이센스 소프트웨어는 아직 사용자에게 불편을 끼치 지 않고도 주요 인프라에 투자하지 않고도 문제를 해결하거나 적어도 그렇게 안전하게 해결할 수 없습니다.

라이센스 상태를 저장하는 위치/메커니즘은 대부분 관련성이 없습니다. 레지스트리는 텍스트 파일보다 안전하지 않으며 콘텐츠에 액세스하는 데 몇 초가 걸리고 일부 원격 백 워터에서 항목을 "숨김"합니다 레지스트리의 많은 도움이되지 않습니다.

아마, 당신의 소프트웨어에는 어떤 종류의 영속성 문제가 있습니다 (데이터베이스 파일 시스템?); 동일한 지속성 메커니즘을 사용하여 등록 상태를 저장할 수 있습니다.

물론 소프트웨어에 대한 무단 액세스를 시도하는 사용자가 소프트웨어에서 읽고 쓸 수있는 모든 항목에 액세스 할 수 있습니다. 따라서 레코드를 암호화 할 수 있습니다. 그 암호화 메커니즘에 대한 키를 관리하는 문제가 있습니다. afaik, 거기에 지금이 강력한 솔루션이 없습니다.

그렇다면 인터넷에 "라이센스 서버"가있을 수 있습니다. 귀하의 소프트웨어는 귀하의 기계에 대한 고유 한 식별자 (예 : (MAC address)를 읽고 라이센스 서버로 보내고 서버에 라이센스 상태를 반환하게 할 수 있습니다. 다시 말하지만, 이것은 매우 쉽게 회피 할 수 있습니다. 이제 사용자가 소프트웨어를 사용하려면 온라인 상태 여야합니다.

소프트웨어가 사용자에게 원격으로 매력적일 경우 해커는 며칠 내에 라이센스 키 보호를 중단하고 인터넷에서 자세한 지침을 게시합니다. 애플은 Iphone/Ipad에서 소프트웨어를 보호하기 위해 엄청난 시간을 보냈지 만, 아직 본때를 보여 주던 애플 리케이션은 애플의 잠금을 해제했다.

내 생각에 소프트웨어가 수천만 달러의 매출을 올릴 가치가 없다면 사용자는 가능한 한 쉽게 생활하고 보안 측면에 대해서는 너무 걱정하지 않아야합니다. @ bunting recommends), 또는 텍스트 파일에 대한 정착.특히

, I 것 : 라이센스 파일이없는 경우

  • ,
  • 는 것을 비교
  • 키 라이센스를 입력하도록 사용자에게 응용 프로그램을 시작할 때 유효한 라이센스 파일의 존재에 대한

    • 확인 라이센스 키가있는 키
    • "유효한"파일을 파일 시스템의 app 디렉토리에 씁니다. 또는 기존 구성 파일을 수정하십시오.

    이것은 쉽게 깨지기 쉽습니다. 그래서 한 걸음 더 나아갈 수 있습니다.

    첫째, Java 응용 프로그램은 디 컴파일하기 쉽고 공격자는 "라이센스"상수를 쉽게 읽을 수 있습니다. 이 작업을 어렵게 만들려면 obfuscator를 사용해야합니다 (불가능하지는 않지만).

    둘째, 로컬 라이센스 데이터를 암호화 할 수 있습니다. 이것 역시 완전히 캐주얼 한 해커가 더 어려워 질 것입니다. 해커가 작동중인 라이센스 키로 애플리케이션을 재배포 할 수 없도록 (예 : 라이센스 키에 시스템의 MAC 주소를 곱하여) 암호화 체계에 일부 로컬 데이터를 포함 할 수 있습니다.

    두 경우 모두 라이센스를 앱에 "연결"하고 있습니다. 해커가 응용 프로그램의 라이센스 키를 게시하는 게시판이 있으며 새 키로 새 버전의 응용 프로그램을 발급하는 대신 다른 사람이 응답 할 수 없습니다.

    +3

    아니면 더 나은 간단한 팝업 '안녕하세요, 당신이 원하는만큼이 소프트웨어를 사용할 수 있지만 제발, 당신이 유용하다고 생각한다면, 페이팔을 통해 나에게 사랑을 보내주십시오. – mcfinnigan

    +0

    그래, @mcfinnigan, 그게 더 좋을 것이다. - 불편 함으로 생각 하겠지만 - "nagware"가 내 PC에서 아주 빠르게 사라진다. –

    +0

    이 부여되었다. 더 좋은 nagware는 한 번만 머물러 있습니다 :) 그렇지만 네 포인트를 안다. – mcfinnigan

    3

    소프트웨어에 라이센스를 구축하려는 것 같습니다. 당신이 이것을 손으로하기보다는 라이브러리를 사용하는 것을 고려 했습니까? 아마도 True License을 보시면 필요한 작업을 수행해야합니다.

    +0

    답장을 보내 주셔서 감사합니다. 정말 감사합니다. 어쨌든, 이것은 무료입니까? ("http://truemirror.schlichtherle.de/en/에서 무료 평가판 기간 동안 사용 가능한 TrueMirror 파일 동기화 응용 프로그램"이라고 표시되기 때문입니다.) –

    +0

    http://truelicense.java.net/license 페이지를 참조하십시오. .html –

    +0

    고마워 멧새 :) 나는 정말 고마워. :) –

    6

    나는 한 가지 가능성이 간과되어 놀랐습니다. 믿을 수없는 클라이언트로부터 데이터를 보호하는 가장 쉬운 방법은 클라이언트가 결코 그것을 가지지 못하게하는 것입니다. 여러 응용 프로그램 아키텍처에서 웹 응용 프로그램, 원격 클라이언트에 RPC를 제공하는 데스크톱 클라이언트 또는 원격 서버의 가상화 된 데스크톱에 연결하는 고성능 씬 클라이언트를 사용할 수 있습니다. 웹 응용 프로그램은 이미 설치 영역, 데이터 백업 및 유지 관리 분야에서의 장점으로 인해 널리 사용됩니다.

    그래서 ... 악한 클라이언트에서 회사의 보안 정책을 적용 소프트웨어를 만들어

    (매우 가능성) 명예 경화제 과학의 박사 학위를 얻기 위해 시도보다는 ... 당신에게 신뢰할 수있는 서버에 지적 재산을 넣기 만하면 클라이언트는 사용자 인터페이스 (비 기밀 논리)를 갖게됩니다. 이 전략에는 자체적 인 문제가 있습니다. 그것은 트랙 레코드가 클라이언트 복사 보호보다 나은 방법입니다.

    참고 : 고객을 위해 소프트웨어를 "관리"하기 위해 꾸준한 수익을 얻는 것이 좋습니다.

    관련 문제