programing tip

불법 배포로부터 소프트웨어를 어떻게 보호합니까?

itbloger 2020. 9. 9. 07:47
반응형

불법 배포로부터 소프트웨어를 어떻게 보호합니까? [닫은]


크래킹, 해킹 등으로부터 소프트웨어를 보호하는 방법이 궁금합니다.

어떤 종류의 일련 번호 확인을 사용합니까? 하드웨어 키?

타사 솔루션을 사용하십니까?

라이선스 문제를 어떻게 해결합니까? (예 : 유동 라이센스 관리)

편집 : 나는 오픈 소스를 말하는 것이 아니라 엄격하게 상용 소프트웨어 배포를 말하고 있습니다 ...


많은, 많은, 많은 보호가 가능합니다. 핵심은 다음과 같습니다.

  • 타겟 청중과 그들이 기꺼이 참을 수있는 것을 평가
  • 유료로 플레이하려는 청중의 욕구 이해
  • 귀하의 보호를 해제하기 위해 누군가 기꺼이 내놓을 금액 평가
  • 대부분의 사람들이 지불을 피하는 것을 방지하고 소프트웨어를 사용하는 사람들을 귀찮게하지 않도록 충분한 보호를 적용합니다.

깨지지 않는 것은 없습니다. 따라서 여러분이 감당할 수있는 최상의 (최악의) 보호를 단순히 때리는 것보다 이러한 것들을 측정하고 좋은 보호를 선택하는 것이 더 중요합니다.

  • 간단한 등록 코드 (온라인 한 번 확인).
  • 취소 가능한 키를 사용한 간단한 등록, 온라인에서 자주 확인.
  • 암호화 된 키는 프로그램 알고리즘의 일부를 보유합니다 (체크를 건너 뛸 수 없음-프로그램이 작동하려면 실행되어야 함)
  • 하드웨어 키 (공개 / 개인 키 암호화)
  • 하드웨어 키 (키에서 실행되는 프로그램 알고리즘의 일부 포함)
  • 웹 서비스가 중요한 코드를 실행합니다 (해커가 절대 볼 수 없음)

그리고 위의 변형.


어떤 경로를 이용하든 공정한 가격을 청구하고 쉽게 활성화하고 사소한 업데이트를 무료로 제공하며 소프트웨어를 비활성화하지 마십시오. 사용자를 존경심으로 대하면 보상을받을 것입니다. 그럼에도 불구하고 어떤 사람들은 당신이 무엇을하든 그것을 불법 복제하게 될 것입니다.


하지마.

해적은 해적입니다. 당신이 어떤 해결책을 제시하든, 그것은 깨질 수 있고 깨질 것입니다.

반면에 당신의 실제 유료 고객은 쓰레기로 인해 불편을 겪고있는 사람들입니다.


훔치는 것보다 구매하기가 더 쉽습니다. 복사 방지를 쌓아두면 실제 거래의 가치가 매우 낮아집니다.

간단한 활성화 키를 사용하여 보장 그들이 할 수있는 고객을 항상 그들도 그들의를 분실 한 경우 정품 인증 키 또는 다시 다운로드 소프트웨어를 얻을.

모든 복제 방지 (멀티 플레이어 게임 및 은행에 연결되는 금융 소프트웨어와 같은 온라인 전용 구성 요소 제외)는 무력화됩니다. 소프트웨어를 불법으로 다운로드하는 것이 적어도 구입하는 것보다 약간 더 어렵게하고 싶습니다.

내가 열어 본 적이없는 PC 게임이 있는데, 복사 방지 정크가 너무 많아서 가짜 버전을 다운로드하는 것이 실제로 더 쉽기 때문입니다.


소프트웨어 보호는 돈의 가치가 없습니다. 소프트웨어가 수요가 많으면 어떤 일 있어도 패배 입니다.

즉, 하드웨어 보호가 잘 작동 할 수 있습니다. 잘 작동 할 수있는 한 가지 예는 다음과 같습니다. (상당히) 간단하지만 필요한 소프트웨어 구성 요소를 찾아 Verilog / VHDL에서 구현합니다. 공개-개인 키 쌍을 생성하고 챌린지 문자열을 가져와 개인 키로 암호화하는 웹 서비스를 만듭니다. 그런 다음 공개 키가 포함 된 USB 동글을 만들고 무작위 챌린지 문자열을 생성합니다. 소프트웨어는 USB 동글에 챌린지 문자열을 요청하고 암호화를 위해 서버로 전송해야합니다. 그런 다음 소프트웨어가이를 동글로 보냅니다. 동글은 공개 키를 사용하여 암호화 된 챌린지 문자열의 유효성을 검사하고 '활성화'모드로 들어갑니다. 그런 다음 소프트웨어는 HDL로 작성한 작업을 수행해야 할 때마다 동글을 호출합니다.

편집 : 확인 항목 중 일부가 있어야하는 것과 반대라는 것을 깨달았지만 아이디어가 떠오를 것이라고 확신합니다.


마이크로 소프트 소프트웨어 라이선스 제도는 소규모 기업에게는 엄청난 비용이 듭니다. 직접 설정하려는 경우 서버 비용은 약 $ 12,000입니다. 나는 마음의 가식을 위해 그것을 권장하지 않습니다.

우리는 실제로 제품에 Intellilock구현 했습니다 . 라이선스를 얼마나 엄격하게 할 것인지에 대한 모든 결정을 내릴 수 있으며 비용도 매우 효율적입니다. 또한 난독 화, 컴파일러 방지 등을 수행합니다.

중소기업에서 사용하는 또 다른 좋은 솔루션은 SoloServer 입니다. 전자 상거래 및 라이센스 제어 시스템에 가깝습니다. 너무 복잡 할 수있을 정도로 매우 구성 할 수 있습니다. 그러나 그것은 내가들은 것에서 아주 좋은 일을합니다.

나는 또한 과거에 닷넷에 Desaware 라이센스 시스템을 사용했습니다 . 위의 두 가지에 비해 매우 가벼운 시스템입니다. 암호 학적으로 건전한면에서 매우 우수한 라이선스 제어 시스템입니다. 하지만 앱이 실제로 사용할 거의 모든 것을 구현해야하는 매우 낮은 수준의 API입니다.


디지털 "권리"관리는 업계에서 가장 큰 단일 소프트웨어 스네이크 오일 제품입니다. 고전적인 암호화에서 페이지를 빌리기 위해 일반적인 시나리오는 Alice가 Charlie가 읽을 수없는 상태로 Bob에게 메시지를 받고 싶어하는 것입니다. DRM은 응용 프로그램에서 Bob과 Charlie가 같은 사람이기 때문에 작동하지 않습니다!

"사람들이 내 소프트웨어를 훔치는 대신 구매하도록하려면 어떻게해야합니까?"라는 역 질문을하는 것이 좋습니다. 이것은 매우 광범위한 질문입니다. 그러나 일반적으로 연구를 통해 시작됩니다. 판매하려는 소프트웨어 유형을 누가 구매하는지 파악한 다음 그 사람들에게 호소하는 소프트웨어를 생산합니다.

이것에 대한 추가적인 문제는 합법적 인 사본으로 만 업데이트 / 추가 기능을 제한하는 것입니다. 이것은 구매 거래 중에받은 주문 코드처럼 간단 할 수 있습니다.

Stardock 소프트웨어, WindowBlinds 제조업체 및 Sins of a Solar Empire와 같은 게임을 확인하십시오. 후자는 DRM이 없으며 $ 2M 예산에서 상당한 이익을 얻었습니다.


프로세서 ID를 사용하여 "활성화 키"를 생성하는 등 여러 가지 방법이 있습니다.

요점은 누군가가 그것을 원하면 당신이 가진 보호를 리버스 엔지니어링 할 것입니다.

가장 안전한 방법은 런타임 또는 하드웨어 걸쇠에서 온라인 확인을 사용하는 것입니다.

행운을 빕니다!


약간의 시간이 주어지면 소프트웨어는 항상 크랙됩니다. 이를 확인하기 위해 잘 알려진 소프트웨어의 크랙 버전을 검색 할 수 있습니다. 그러나 소프트웨어에 어떤 형태의 보호를 추가하는 것은 여전히 ​​가치가 있습니다.

Remember that dishonest people will never pay for your software and always find/use a cracked version. Very honest people will always stick to the rules even without a licensing scheme just because that is the kind of person they are. But the majority of people are between these two extremes.

Adding some simple protection scheme is a good way of making that bulk of people in the middle act in an honest way. It is a way to nudge them into remembering that the software is not free and they should be paying for the appropriate number of licenses. Many people do actually respond to this. Businesses are especially good at sticking to the rules because the manager is not spending his/her own money. Consumers are less likely to stick to the rules because it is their own money.

But recent experience with releases such as Spore from Electronic Arts shows that you can go to far in licensing. If you make even legit people feel like criminals because they are constantly being validated then they start to rebel. So add some simple licensing to remind people if they are being dishonest but anything more than that is unlikely to boost sales.


Online-only games like World of Warcraft (WoW) have it made, everyone has to connect to the server every time and thus accounts can be constantly verified. No other method works for beans.


Is not exactly the answer you are looking for, but is a great resource on piracy from a game developer who actively asked their pirates about why they do that. And is related to the first part of the answer you choose.

Readi it at Talking to Pirates.


Generally there are two systems that often get confused -

  • Licensing or activation tracking, legal legitimate usage
  • Security preventing illegal usage

For licensing use a commercial package, FlexLM many companies invest huge sums of money into licensing think they also get security, this is a common mistake key generators for these commercial packages are prolifically abundant.

I would only recommend licensing if your selling to corporations who will legitimately pay based on usage, otherwise its probably more effort than its worth.

Remember that as your products become successful, all and every licensing and security measure will be breached eventually. So decide now if it is really worth the effort.

We implemented a clean room clone of FlexLM a number of years ago, we also had to enhance our applications against binary attacks, its long process, you have to revisit it every release. It also really depends on which global markets you sell too, or where your major customer base is as to what you need to do.

Check out another of my answers on securing a DLL.


As has been pointed out, software protection is never guaranteed to be foolproof. What you intend to use depends largely on your target audience. A game, for instance, is not something you are going to be able to protect forever. A server software, on the other hand, is something far less likely to be distributed on the Internet, for a number of reasons (product penetration and liability come to mind; a large corporation does not want to be held liable for bootleg software, and the pirates only bother with things in large-enough demand). In all honesty, for a high-profile game, the best solution is probably to seed the torrent yourself (clandestinely!) and modify it in some way (for instance, so that after two weeks of play it pops up with messages telling you to please consider supporting the developers by purchasing a legitimate copy).

If you put protection in place, bear two things in mind. First, a lower price will supplement any copy protection by making people more inclined to pay the purchase price. Secondly, the protection must not get in the way of users - see Spore for a recent example.


DRM this, DRM that - publishers who force DRM on their projects are doing it because it's profitable. Their economists are concluding this on data which none of us will ever see. The "DRM is evil" trolls are going a little too far.

For a low-visibility product, a simple internet activation is going to stop casual copying. Any other copying is likely negligible to your bottom line.


Illegal distribution is practically impossible to prevent; just ask the RIAA. Digital content can just be copied; analog content can be digitised, and then copied.

You should focus your efforts on preventing unauthorised execution. It's never possible to completely prevent the execution of code on someone else's machine, but you can take certain steps to raise the bar sufficiently high that it becomes easier to purchase your software than to pirate it.

Take a look at the article Developing for Software Protection and Licensing that explains how best to go about developing your application with licensing in mind.

Obligatory disclaimer & plug: the company I co-founded produces the OffByZero Cobalt software licensing solution for .NET.


The trouble with this idea of just let the pirates use it they wont buy it anyway and will show their friends who might buy it is twofold.

  1. With software that uses 3rd party services, the pirated copies are using up valuable bandwidth/resource which gives legit users a worse experience, make my sw look more popular then it is and has the 3rd party services asking me to pay more for their services because of the bandwidth being used.

  2. Many casual wouldn't dream of cracking the sw themselves but if there is an easy assessible crack on a site like piratebay they will use it, if there wasn't they might buy it.

This concept of not disabling pirated software once discovered also seems crazy, I don't understand why I should let someone continue to use software they shouldn't be using, I guess this is just the view/hope of the pirates.

Also, its worth noting that making a program hard to crack is one thing, but you also need to prevent legit copies being shared, otherwise somebody could simply buy one copy and then
share it with thousands of others via a torrent site. The fact of having their name/email address embedded in the license isn't going to be enough to disuade everyone from doing this, and it only really takes one for there to be a problem.

The only way I can see to prevent this is to either:

  1. Have server check and lock license on program startup every time, and release license on program exit. If another client starts with same license whilst the first client has license then it is rejected. This way doesn't prevent the license being used by more than one user, but does prevent it being used concurrently by more than one user - which is good enough. It also allows a legitimate user to transfer the license on any of their computers which provides a better experience.

  2. On first client startup client sends license to server and server verifies it, causing some flag to be set within the client software. Further requests from other clients with the same license are rejected. The trouble with this approach is the original client would have problems if they reinstalled the software or wanted to use a different computer.


Even if you used some kind of biometric fingerprint authentication, someone would find a way to crack it. There's really no practical way around that. Instead of trying to make your software hack-proof, think about how much extra revenue will be brought in by adding additional copy protection vs. the amount of time and money it will take to implement it. At some point, it gets to be cheaper to go with a less rigorous copy protection scheme.

It depends on what exactly your software product is, but one possibility is to move the "valuable" part of the program out of the software and keep it under your exclusive control. You would charge a modest fee for the software (mostly to cover print and distribution costs) and would generate your revenue from the external component. For example, an anti-virus program that is sold for cheap (or bundled for free with other products) but sells subscriptions to its virus definitions update service. With that model, a pirated copy that subscribes to your update service wouldn't represent much of a financial loss. With the increasing popularity of applications "in the cloud", this method is becoming easier to implement; host the application on your cloud, and charge users for cloud access. This doesn't stop someone from re-implementing their own cloud to eliminate the need for your service, but the time and effort involved in doing so would most likely outweigh the benefits (if you keep your pricing model reasonable).


If your interested in protecting software that you intend to sell to consumers I would recommend any of a variety of license key generating libraries (Google search on license key generation). Usually the user has to give you some sort of seed like their email address or name and they get back the registration code.

Several companies will either host and distribute your software or provide a complete installation/purchase application that you can integrate with and do this automatically probably at no additional cost to you.

I have sold software to consumers and I find this the right balance of cost/ease of use/protection.


The simple, and best solution, is just to charge them up front. Set a price that works for you and them.

Asking paying customers to prove that they are paying customers after they've already paid just pisses them off. Implementing the code to make your software not run wastes your time and money, and introduces bugs and annoyances for legitimate customers. You'd be better off spending that time making a better product.

Lots of games/etc will "protect" the first version, then drop the protections in the first patch due to compatibility problems with real customers. It's not an unreasonable strategy if you insist on a modicum of protection.


Almost all copy-protection is both ineffective, and a usability nightmare. Some of it, such as putting root-kits on your customers' machines becomes downright unethical


Make part of your product an online component which requires connection and authentication. Here are some examples:

  • Online Games
  • Virus Protection
  • Spam Protection
  • Laptop tracking software

This paradigm only goes so far though and can turn some consumers off.


I agree with a lot of posters that no software-based copy protection scheme will deter against a skilled software pirate. For commercial .NET based software Microsoft Software License Protection (SLP) is a very reasonably priced solution. It supports time-limited and floating licenses. Their pricing starts at $10/month + $5 per activation and the protection components seem to work as advertised. It's a fairly new offering, though, so buyer beware.


I suggest simple activation key (even if you know that it can be broken), you really don't want your software to get in your users way, or they'll simply push it away.

Make sure that they can re-download the software, I suggest a web page where they can logging and download your software only after they paid (and yes they should be able to download as many times they wish it, directly, without a single question about why on your part).

Thrust your paid users above all, there is nothing more irritating that being accused from being a criminal when you are a legit users (DVD's anti-piracy warnings anyone).

You can add a service that checks the key against a server when online, and in case of two different IPs are using the same key, popup a suggestion to buy another license.

But please don't inactivate it, it might be a happy user showing your software to a friend!!!!


If you are a software developer, one of the possible solutions is to embed a meta data direct into your product. Check out for an instance Destruction Security tool from theredsunrise.


We license our commercial software using our own licensing system - which is what we are selling (license management tools). We generally sell subscription licenses, but can also sell based on usage if we wish. It has been secure for us so far: www.agilis-sw.com

참고URL : https://stackoverflow.com/questions/109997/how-do-you-protect-your-software-from-illegal-distribution

반응형