<?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/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=everything-you-need-to-know-about-registration-systems</link>
	<description>Patrick McKenzie (patio11) blogs on software development, marketing, and general business topics</description>
	<lastBuildDate>Sat, 11 Feb 2012 17:02:17 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Hydroponics</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-387</link>
		<dc:creator>Hydroponics</dc:creator>
		<pubDate>Mon, 14 Nov 2011 20:41:52 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-387</guid>
		<description>I will right away snatch your rss feed as I can&#039;t find your e-mail subscription link or e-newsletter service. Do you have any? Please allow me recognize so that I may just subscribe. Thanks.</description>
		<content:encoded><![CDATA[<p>I will right away snatch your rss feed as I can&#8217;t find your e-mail subscription link or e-newsletter service. Do you have any? Please allow me recognize so that I may just subscribe. Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: homework help</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-386</link>
		<dc:creator>homework help</dc:creator>
		<pubDate>Sun, 06 Nov 2011 00:26:50 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-386</guid>
		<description>I have been exploring for a bit for any high quality articles or blog posts on this sort of space . Exploring in Yahoo I finally stumbled upon this site. Reading this info So i&#039;m happy to exhibit that I have a very good uncanny feeling I came upon just what I needed. I so much indubitably will make certain to do not forget this site and give it a glance on a continuing basis.</description>
		<content:encoded><![CDATA[<p>I have been exploring for a bit for any high quality articles or blog posts on this sort of space . Exploring in Yahoo I finally stumbled upon this site. Reading this info So i&#8217;m happy to exhibit that I have a very good uncanny feeling I came upon just what I needed. I so much indubitably will make certain to do not forget this site and give it a glance on a continuing basis.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: What&#8217;s the best way to protect a Windows application from piracy? - Programmers Goodies</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-385</link>
		<dc:creator>What&#8217;s the best way to protect a Windows application from piracy? - Programmers Goodies</dc:creator>
		<pubDate>Tue, 05 Jul 2011 10:27:23 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-385</guid>
		<description>[...] http://kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/ [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/" rel="nofollow">http://kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael BT</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-384</link>
		<dc:creator>Michael BT</dc:creator>
		<pubDate>Tue, 17 May 2011 18:28:44 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-384</guid>
		<description>Michael Hubert hit the nail on the head.  Modern protection is about running the program (or at least part of it) as a web service.  Cracking assemblies and hacking servers are 2 entirely different games, and although your server may be hacked they&#039;re playing in your backyard.  It&#039;s much easier to protect your server than it is to break an existing stand-alone program, and the degree of damage is determined by your vigilance in patching the server&#039;s holes.  In this scenario obfuscation hardly matters beyond renaming methods and variables because as Michale said they would have to rewrite the procedures themselves.

Another method I&#039;ve toyed around with is having a unique assembly for every machine.  The installer reads unique values from your client&#039;s machine and sends them to the server.  The server then Modifies constants based on the unique IDs of the machine.

ie.  newConstant = originalConstant ^ uniqueID

(calculated inline ofcourse)

But even this is just another hindrance to the cracker whereas a web service is as close to perfection as one could hope to achieve.   It really is about maintaining your control over the product.</description>
		<content:encoded><![CDATA[<p>Michael Hubert hit the nail on the head.  Modern protection is about running the program (or at least part of it) as a web service.  Cracking assemblies and hacking servers are 2 entirely different games, and although your server may be hacked they&#8217;re playing in your backyard.  It&#8217;s much easier to protect your server than it is to break an existing stand-alone program, and the degree of damage is determined by your vigilance in patching the server&#8217;s holes.  In this scenario obfuscation hardly matters beyond renaming methods and variables because as Michale said they would have to rewrite the procedures themselves.</p>
<p>Another method I&#8217;ve toyed around with is having a unique assembly for every machine.  The installer reads unique values from your client&#8217;s machine and sends them to the server.  The server then Modifies constants based on the unique IDs of the machine.</p>
<p>ie.  newConstant = originalConstant ^ uniqueID</p>
<p>(calculated inline ofcourse)</p>
<p>But even this is just another hindrance to the cracker whereas a web service is as close to perfection as one could hope to achieve.   It really is about maintaining your control over the product.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lessons Learned At Business of Software 2010: MicroISV on a Shoestring</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-383</link>
		<dc:creator>Lessons Learned At Business of Software 2010: MicroISV on a Shoestring</dc:creator>
		<pubDate>Fri, 15 Oct 2010 19:24:02 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-383</guid>
		<description>[...]  (Not an issue in practice, you can pretty much fire-and-forget a low-pain DRM system, and since if you&#8217;re smart you&#8217;re doing web apps anyway this is disappearing from the [...]</description>
		<content:encoded><![CDATA[<p>[...]  (Not an issue in practice, you can pretty much fire-and-forget a low-pain DRM system, and since if you&#8217;re smart you&#8217;re doing web apps anyway this is disappearing from the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Types of Software Users &#171; License Toolkit</title>
		<link>http://www.kalzumeus.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-382</link>
		<dc:creator>Types of Software Users &#171; License Toolkit</dc:creator>
		<pubDate>Sat, 02 Oct 2010 18:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://microisvjournal.wordpress.com/2006/09/05/everything-you-need-to-know-about-registration-systems/#comment-382</guid>
		<description>[...] McKenzie wrote a great blog post about software registration a few years back.  Patrick compares your software registration system [...]</description>
		<content:encoded><![CDATA[<p>[...] McKenzie wrote a great blog post about software registration a few years back.  Patrick compares your software registration system [...]</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-381</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-381</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-380</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-380</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-379</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-379</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 <img src='http://www.kalzumeus.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  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-378</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-378</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>
</channel>
</rss>

