   Once more on IP and bling-bling
  I'm hatching a devious plan regarding a project I'm working on. Essentially it includes "the bulk" of it, a rather powerful rendering engine with the sole purpose of managing plugins and providing the easiest possible access to all of the features while minimizing the required time to develop plugins for (no support or helpdesk for this version); the "popular appendix", which allows the user to set up a small render farm and use select 3rd party plugins (no support or helpdesk); and the "professional appendix", which has an additional feature allowing the user to render videos in addition to still images in a variety of professional formats, and set up a much more controlled render farm. Plus there's online customer support.The "professional" and "popular" portions of the application are illishly nasty to write because it's very difficult to properly test them, plus they consume a lot of time to sort out. Which is why I've come to a three-stage solution for the application:1) the free version ("bulk")2) the cheap version ("popular")3) the "pro" version ("professional")Since there is no way I can directly or indirectly control if the application will be cracked in two days, I'm planning to release it without a key-checker or any other copy protection feature. However I'd like to maintain a certain kind of control over the pro version, so that: 1) the free version I don't care about - it's free; 2) the cheap version won't have any copy protection features, but will cost a small amount of money ($10-$15 - think of this as a donation for a me, a student) for those who are honest (or stupid - depending on your point of view); 3) the pro version will cost considerably more (I haven't decided on  the price yet - I guess it depends on whether I am able to add some of the features I have in mind or not). I can't imagine what the demand for the pro version would be, but right now I'm thinking it's small enough to justify "personalized builds" and direct interaction with the buyer.The big question is what to connect these personalized builds with. Computer configuration, so that the user can request a new build (say, three times a year) when the configuration changes? Or something else?I realize that this is a nasty way of doing business, but I am not a large company who can afford to spend 40-50% of their resources on copy protection.Furthermore - I started working on this for fun and it kind of grew on me. By now the project is large and functional enough to easily be released as the free version I initially had in mind. Currently I'm working on some of the primary features of the pro version. The thing is that I don't like charging for stuff, so if I could live to be 560, I'd probably just give the darn thing away. I'd even release it as open source. But I won't, because it's just eating up too much of my time and its potential (from a personal perspective) is growing like nothing I've done before. So on top of everything this is also a philosophical dilemma :).So, to recap:1) what is the most solid way of hooking a piece of software to a particular computer? Personalized builds should allow for a certain degree of control. Right? Whereas, for instance, simply tying the software to a hardward GUID won't work because it's relatively easy to just crack the damn thing an modify a few characters in the exe file.2) is setting up absolutely no copy protection for the two other versions an insanely stupid idea? I mean I'd be leaving the user absolutely no motivation to pay (khm - donate) for it...3) anybody else have problems asking money for their work? Because sometimes I think it's a disease only I have...Cheers,i.   
  If it's personnalized builds, just use some watermark.  Make it so the watermarks are vital to the execution by using differently coded versions of some algorithms for each builds so that they output different assembly.  Keep a list of each combinations and if a pirated version come out, you can be reasonnably sure of who the culprit is.  Generally speaking, if distribution is limited (no opportunity for a man in the middle attack) and the cost is high however, paying customers are unlikely to create a pirated version.   ;  How would one go about adding the watermark? By creating certain value points within the application that can then be tested to see what the original might have been? What would the best way be to create these value points - for instance unused allocations at specific program offsets?Beyond that, what's the leverage this method would give me? I'd potentially know who the leak is, which would allow me to do exactly what? Call in the authorities? If so, then on what grounds? And sadly that would't stop the leak because once it's out, it's out...   