<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Everything You Need To Know About Registration Systems</title>
	<atom:link href="http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/</link>
	<description>B2C stands for "Bingo To Customer"</description>
	<lastBuildDate>Wed, 08 Sep 2010 07:18:36 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Michael Hubert</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-4026</link>
		<dc:creator>Michael Hubert</dc:creator>
		<pubDate>Sun, 11 Apr 2010 23:24:19 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-4026</guid>
		<description>@Matt, your program might not have been specifically cracked, but I can confirm that PELock has been cracked, and any program protected with it can be easily unprotected if the attacker so chose to do so.</description>
		<content:encoded><![CDATA[<p>@Matt, your program might not have been specifically cracked, but I can confirm that PELock has been cracked, and any program protected with it can be easily unprotected if the attacker so chose to do so.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Hubert</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-4025</link>
		<dc:creator>Michael Hubert</dc:creator>
		<pubDate>Sun, 11 Apr 2010 23:22:12 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-4025</guid>
		<description>Personally my favourite methods of keeping pirates out are:

- Server-side security.

- Total program obfuscation.

I primarily work with c# .NET, so bear with me.

The first thing to note is that what pirates want is to be able to run your product as if they bought it, with as little crap bugging them as possible. So I implemented server-side security, using Windows Communication Foundation, I am using functions that are implemented on my own server. Then whatever data is generated, is returned back to me, in an SSL-secured fashion. Therefore much of the functionality of my program, comes from being able to login to my server, and use what functionality my server offers to them.
Now this is what allows me to channel the attacks. All of my security is centered around &quot;This user on our server does not have the permissions to do this&quot; or &quot;This user does not even exist&quot;. Because of this, the attacker cannot crack my server, and therefore bypassing my security is not so simple.

The attacker must emulate much of my server functionality in a cracked executable. He must rewrite large portions of my code, and recompile those into a new executable, or even rewriting them directly into my executable. Now this is where the obfuscation comes in. I will use Smartassembly for this example, but there are other solutions much like this. With Smartassembly, it both protects your executable and obfuscates the code. Meaning that even if someone is able to get your code into readable format, it will still be one giant jumble. A big bonus to this is that the executable will no longer run anymore, so the attacker is left to only being able to read obfuscated code.
Well this makes it difficult for the attacker to actually crack my executable, because they can only edit it if they remove the protection, and they can only run it if the protection is still there. Even to this date, Smartassembly 2/3 have not been cracked to a point where attackers could run the program after stripping the protection.

So by forcing the attacker to a route where they MUST crack the executable, and then making it nearly impossible to crack the executable, I make a fairly formidable opponent in terms of protection for my program. Of course, after a given amount of time, presumably years, the protection scheme may be cracked wide open. But the entire point is outlasting the hackers until I can get a much newer version of my product, which will be protected with a much newer protection scheme. If the hackers want a product that&#039;s been outdated for a couple years, be my guest.</description>
		<content:encoded><![CDATA[<p>Personally my favourite methods of keeping pirates out are:</p>
<p>- Server-side security.</p>
<p>- Total program obfuscation.</p>
<p>I primarily work with c# .NET, so bear with me.</p>
<p>The first thing to note is that what pirates want is to be able to run your product as if they bought it, with as little crap bugging them as possible. So I implemented server-side security, using Windows Communication Foundation, I am using functions that are implemented on my own server. Then whatever data is generated, is returned back to me, in an SSL-secured fashion. Therefore much of the functionality of my program, comes from being able to login to my server, and use what functionality my server offers to them.<br />
Now this is what allows me to channel the attacks. All of my security is centered around &#8220;This user on our server does not have the permissions to do this&#8221; or &#8220;This user does not even exist&#8221;. Because of this, the attacker cannot crack my server, and therefore bypassing my security is not so simple.</p>
<p>The attacker must emulate much of my server functionality in a cracked executable. He must rewrite large portions of my code, and recompile those into a new executable, or even rewriting them directly into my executable. Now this is where the obfuscation comes in. I will use Smartassembly for this example, but there are other solutions much like this. With Smartassembly, it both protects your executable and obfuscates the code. Meaning that even if someone is able to get your code into readable format, it will still be one giant jumble. A big bonus to this is that the executable will no longer run anymore, so the attacker is left to only being able to read obfuscated code.<br />
Well this makes it difficult for the attacker to actually crack my executable, because they can only edit it if they remove the protection, and they can only run it if the protection is still there. Even to this date, Smartassembly 2/3 have not been cracked to a point where attackers could run the program after stripping the protection.</p>
<p>So by forcing the attacker to a route where they MUST crack the executable, and then making it nearly impossible to crack the executable, I make a fairly formidable opponent in terms of protection for my program. Of course, after a given amount of time, presumably years, the protection scheme may be cracked wide open. But the entire point is outlasting the hackers until I can get a much newer version of my product, which will be protected with a much newer protection scheme. If the hackers want a product that&#8217;s been outdated for a couple years, be my guest.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-3528</link>
		<dc:creator>Matt</dc:creator>
		<pubDate>Fri, 12 Feb 2010 14:32:44 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-3528</guid>
		<description>I&#039;m using less known executable protector PELock for 3 years now, it&#039;s a little bit clumsy to use, basically You need to wrap your sensitive code parts into encryption markers:

int DemoCode()
{
DEMO_START

printf(&quot;You will need a license key to run this code&quot;);

DEMO_END

return 0;
}

I admit my software isnt&#039;t as popular as I would expect it to be :P hehe, but it hasn&#039;t been cracked yet, I guess more popular copy protections are already better analyzed and described.</description>
		<content:encoded><![CDATA[<p>I&#8217;m using less known executable protector PELock for 3 years now, it&#8217;s a little bit clumsy to use, basically You need to wrap your sensitive code parts into encryption markers:</p>
<p>int DemoCode()<br />
{<br />
DEMO_START</p>
<p>printf(&#8220;You will need a license key to run this code&#8221;);</p>
<p>DEMO_END</p>
<p>return 0;<br />
}</p>
<p>I admit my software isnt&#8217;t as popular as I would expect it to be :P hehe, but it hasn&#8217;t been cracked yet, I guess more popular copy protections are already better analyzed and described.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nash</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-3454</link>
		<dc:creator>Nash</dc:creator>
		<pubDate>Mon, 01 Feb 2010 13:50:50 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-3454</guid>
		<description>Hi everyone,

Can you please explain me how the Online Activation technique works coz i need to implement it in one of my product (some basic steps as in what all inputs are requried to the registration server and what is the best way to secure this activation process) and what are the best possible ways to store the license info on machine for example registry, license file etc.

I have integrated the manual activation for this product already.

Thanks</description>
		<content:encoded><![CDATA[<p>Hi everyone,</p>
<p>Can you please explain me how the Online Activation technique works coz i need to implement it in one of my product (some basic steps as in what all inputs are requried to the registration server and what is the best way to secure this activation process) and what are the best possible ways to store the license info on machine for example registry, license file etc.</p>
<p>I have integrated the manual activation for this product already.</p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elliot Axel</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-2417</link>
		<dc:creator>Elliot Axel</dc:creator>
		<pubDate>Fri, 11 Sep 2009 18:13:16 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-2417</guid>
		<description>How about a piece of software that was written in1995 (still very useful to some of us), is set up on a 30 day trial requiring registration to continue using it. Author died 10 years ago, and all the registration links are long gone. I just downloaded a copy of this software, but can&#039;t use it after Oct 10....</description>
		<content:encoded><![CDATA[<p>How about a piece of software that was written in1995 (still very useful to some of us), is set up on a 30 day trial requiring registration to continue using it. Author died 10 years ago, and all the registration links are long gone. I just downloaded a copy of this software, but can&#8217;t use it after Oct 10&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Why I&#8217;m Done Making Desktop Applications: MicroISV on a Shoestring</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-2311</link>
		<dc:creator>Why I&#8217;m Done Making Desktop Applications: MicroISV on a Shoestring</dc:creator>
		<pubDate>Sat, 05 Sep 2009 16:06:34 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-2311</guid>
		<description>[...] famously lackadaisical about software piracy, preferring to concentrate on satisfying paying customers rather than harming their experience with anti-piracy methods.  However, the existence of pirates [...]</description>
		<content:encoded><![CDATA[<p>[...] famously lackadaisical about software piracy, preferring to concentrate on satisfying paying customers rather than harming their experience with anti-piracy methods.  However, the existence of pirates [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TD</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-1960</link>
		<dc:creator>TD</dc:creator>
		<pubDate>Thu, 21 May 2009 22:15:54 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-1960</guid>
		<description>Need to re-word this part of my last post:

I am thinking I’ll just create a list of product keys and issue one of these keys to the customer when they make a purchase. In the app I&#039;m selling I’ll have code that checks the key to see if it meets some scheme I’ll come up with. I know if it is decompiled that the scheme will be known but it sounds like it’s not worth worrrying about that.</description>
		<content:encoded><![CDATA[<p>Need to re-word this part of my last post:</p>
<p>I am thinking I’ll just create a list of product keys and issue one of these keys to the customer when they make a purchase. In the app I&#8217;m selling I’ll have code that checks the key to see if it meets some scheme I’ll come up with. I know if it is decompiled that the scheme will be known but it sounds like it’s not worth worrrying about that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TD</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-1959</link>
		<dc:creator>TD</dc:creator>
		<pubDate>Thu, 21 May 2009 22:11:39 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-1959</guid>
		<description>Great article.  I have read and re-read some parts for several weeks now.  I have thoughts/questions on this subject.

First, it appears that it does not matter how you impliment a product key protection scheme for your app as there will always be a group of hackers who will decomplie your app to learn how the product key protection scheme works.

Second, it appears that the next group of hackers may not go to the trouble to decompile but spent time trying to crack the scheme used to create the product key itself.

I read where one way to keep the hackers at bay is to &quot;patch&quot; (whatever that means) the app so that the product key protection scheme is changed regularly in some small way.  Does not doing this break the keys issued for earlier &quot;patched versions&quot; of the app?

I am thinking I&#039;ll just create an app to generate a list of product keys and issue one to the customer when they make a purchase.  In the app I&#039;ll have code that checks the key to see if it meets some scheme I&#039;ll come up with.  I know if it is decompiled that the scheme will be known but it sounds like it&#039;s not worth worrrying about that.

Any thoughts on my thoughs?
TD</description>
		<content:encoded><![CDATA[<p>Great article.  I have read and re-read some parts for several weeks now.  I have thoughts/questions on this subject.</p>
<p>First, it appears that it does not matter how you impliment a product key protection scheme for your app as there will always be a group of hackers who will decomplie your app to learn how the product key protection scheme works.</p>
<p>Second, it appears that the next group of hackers may not go to the trouble to decompile but spent time trying to crack the scheme used to create the product key itself.</p>
<p>I read where one way to keep the hackers at bay is to &#8220;patch&#8221; (whatever that means) the app so that the product key protection scheme is changed regularly in some small way.  Does not doing this break the keys issued for earlier &#8220;patched versions&#8221; of the app?</p>
<p>I am thinking I&#8217;ll just create an app to generate a list of product keys and issue one to the customer when they make a purchase.  In the app I&#8217;ll have code that checks the key to see if it meets some scheme I&#8217;ll come up with.  I know if it is decompiled that the scheme will be known but it sounds like it&#8217;s not worth worrrying about that.</p>
<p>Any thoughts on my thoughs?<br />
TD</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt C</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-316</link>
		<dc:creator>Matt C</dc:creator>
		<pubDate>Wed, 03 Dec 2008 17:55:41 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-316</guid>
		<description>&gt; I don’t trust myself to implement encryption. Neither should you. Really, trust Bob Schneider, you’ll probably just end up breaking something.

Yeah, I liked the cryptography advice in &quot;Blue Skies for Everyone&quot;, though you kinda have to read between the lines to get it.

Also, I heard Bruce Schneier had his own rock and roll song steganographically embedded into the text of Applied Cryptography.  Who would have thunk it?

:)</description>
		<content:encoded><![CDATA[<p>&gt; I don’t trust myself to implement encryption. Neither should you. Really, trust Bob Schneider, you’ll probably just end up breaking something.</p>
<p>Yeah, I liked the cryptography advice in &#8220;Blue Skies for Everyone&#8221;, though you kinda have to read between the lines to get it.</p>
<p>Also, I heard Bruce Schneier had his own rock and roll song steganographically embedded into the text of Applied Cryptography.  Who would have thunk it?</p>
<p>:)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: attila</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-315</link>
		<dc:creator>attila</dc:creator>
		<pubDate>Tue, 14 Oct 2008 20:20:24 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-315</guid>
		<description>I have just one question. Why don&#039;t you create a demo version instead of the trial? It could add watermark to the cards, or something similar. When somebody purchases a legal copy then he will receive the full version.

Best regards</description>
		<content:encoded><![CDATA[<p>I have just one question. Why don&#8217;t you create a demo version instead of the trial? It could add watermark to the cards, or something similar. When somebody purchases a legal copy then he will receive the full version.</p>
<p>Best regards</p>
]]></content:encoded>
	</item>
</channel>
</rss>
