<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: C64 screen memory and anti-debugging</title>
	<atom:link href="http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/feed/" rel="self" type="application/rss+xml" />
	<link>http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/</link>
	<description>Embedded security, crypto, software protection</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:16:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Nate Lawson</title>
		<link>http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/comment-page-1/#comment-3415</link>
		<dc:creator><![CDATA[Nate Lawson]]></dc:creator>
		<pubDate>Fri, 26 Oct 2007 06:49:47 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/#comment-3415</guid>
		<description><![CDATA[Thanks.  Before I respond, let me give you a challenge in return.  How would you translate this general technique (using a shared resource for anti-debugging) to usermode?

For other programs concurrently using the same technique, there is no easy solution.  Since the whole goal is to avoid shared use of the resource, this is how it&#039;s supposed to work.

First, you can often assume mostly dedicated access (i.e., playing a game).  Asking the user not to play two games at once is usually reasonable.  Second, if you control both apps that do the sharing, there are cryptographic ways of ensuring that the attacker isn&#039;t the other party.  Third, the most common response mechanism for this approach when it&#039;s possible someone might have a legitimate purpose for using the resource is to fail obviously and softly.  An error message to the user describing the problem and how to correct it is a good idea.  As always, the response should be far instruction-wise from the check that detects the problem.]]></description>
		<content:encoded><![CDATA[<p>Thanks.  Before I respond, let me give you a challenge in return.  How would you translate this general technique (using a shared resource for anti-debugging) to usermode?</p>
<p>For other programs concurrently using the same technique, there is no easy solution.  Since the whole goal is to avoid shared use of the resource, this is how it&#8217;s supposed to work.</p>
<p>First, you can often assume mostly dedicated access (i.e., playing a game).  Asking the user not to play two games at once is usually reasonable.  Second, if you control both apps that do the sharing, there are cryptographic ways of ensuring that the attacker isn&#8217;t the other party.  Third, the most common response mechanism for this approach when it&#8217;s possible someone might have a legitimate purpose for using the resource is to fail obviously and softly.  An error message to the user describing the problem and how to correct it is a good idea.  As always, the response should be far instruction-wise from the check that detects the problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andreas</title>
		<link>http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/comment-page-1/#comment-3396</link>
		<dc:creator><![CDATA[Andreas]]></dc:creator>
		<pubDate>Wed, 24 Oct 2007 06:31:47 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/#comment-3396</guid>
		<description><![CDATA[Hi Nate, I&#039;m pretty new at cracking/anti-cracking techniques, so I guess I lack some of the fundamentals. Finding your blog was a huge boost for my knowledge in the field. Since I&#039;ve never been a cracker myself I find it hard to think like one. I simply assume the cracker to be omnipotent, but then all my efforts seem to be in vain and I succumb to disillusion.

It sounds very attractive to store some code (or a crypto-key?) in a shared resource like that, but the more I think about it the more I see the problems prop up. What if two different programs use the same shared resource for their software protection?

Thanks for writing a great blog!]]></description>
		<content:encoded><![CDATA[<p>Hi Nate, I&#8217;m pretty new at cracking/anti-cracking techniques, so I guess I lack some of the fundamentals. Finding your blog was a huge boost for my knowledge in the field. Since I&#8217;ve never been a cracker myself I find it hard to think like one. I simply assume the cracker to be omnipotent, but then all my efforts seem to be in vain and I succumb to disillusion.</p>
<p>It sounds very attractive to store some code (or a crypto-key?) in a shared resource like that, but the more I think about it the more I see the problems prop up. What if two different programs use the same shared resource for their software protection?</p>
<p>Thanks for writing a great blog!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Lawson</title>
		<link>http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/comment-page-1/#comment-3395</link>
		<dc:creator><![CDATA[Nate Lawson]]></dc:creator>
		<pubDate>Wed, 24 Oct 2007 05:19:03 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/#comment-3395</guid>
		<description><![CDATA[Hi Andreas.  I am not intentionally leaving out details, I just happen to write from my own experience and perspective.  So I may leave out things which I forgot not everyone assumes.  :)

In this case, most of my work is kernel-side.  Even when reversing a usermode program, I like to use a kernel debugger.  So when I talk about anti-debugging, I sometimes assume the vantage point is kernel mode.  Most of the time the general technique is applicable to both.]]></description>
		<content:encoded><![CDATA[<p>Hi Andreas.  I am not intentionally leaving out details, I just happen to write from my own experience and perspective.  So I may leave out things which I forgot not everyone assumes.  :)</p>
<p>In this case, most of my work is kernel-side.  Even when reversing a usermode program, I like to use a kernel debugger.  So when I talk about anti-debugging, I sometimes assume the vantage point is kernel mode.  Most of the time the general technique is applicable to both.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andreas</title>
		<link>http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/comment-page-1/#comment-3387</link>
		<dc:creator><![CDATA[Andreas]]></dc:creator>
		<pubDate>Tue, 23 Oct 2007 07:10:40 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/#comment-3387</guid>
		<description><![CDATA[How can you put code in the RAM page used for the 1394 debugger stub with an ordinary Windows application? Doesn&#039;t that require a kernel mode driver or similar?

I&#039;ve enjoyed reading your blog for a while and I think it&#039;s very interesting, although (intentionally?) vague on the details. Maybe that&#039;s a good thing, at least it makes my brain hurt trying to figure out how to actually implement any of your suggestions. Maybe I just look at it from the wrong angle, I read your blog from an independent shareware author&#039;s view.]]></description>
		<content:encoded><![CDATA[<p>How can you put code in the RAM page used for the 1394 debugger stub with an ordinary Windows application? Doesn&#8217;t that require a kernel mode driver or similar?</p>
<p>I&#8217;ve enjoyed reading your blog for a while and I think it&#8217;s very interesting, although (intentionally?) vague on the details. Maybe that&#8217;s a good thing, at least it makes my brain hurt trying to figure out how to actually implement any of your suggestions. Maybe I just look at it from the wrong angle, I read your blog from an independent shareware author&#8217;s view.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Lawson</title>
		<link>http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/comment-page-1/#comment-3219</link>
		<dc:creator><![CDATA[Nate Lawson]]></dc:creator>
		<pubDate>Sat, 06 Oct 2007 00:36:13 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/#comment-3219</guid>
		<description><![CDATA[Using screen memory?  None that I know of.  But the general approach of utilizing shared resources is still very relevant.

For example, storing some of your code in the RAM page used for the 1394 debugger stub under Windows means attaching a debugger would overwrite that code.  This is more powerful than checking the KdDebuggerNotPresent variable. There are many other examples.]]></description>
		<content:encoded><![CDATA[<p>Using screen memory?  None that I know of.  But the general approach of utilizing shared resources is still very relevant.</p>
<p>For example, storing some of your code in the RAM page used for the 1394 debugger stub under Windows means attaching a debugger would overwrite that code.  This is more powerful than checking the KdDebuggerNotPresent variable. There are many other examples.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt</title>
		<link>http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/comment-page-1/#comment-3214</link>
		<dc:creator><![CDATA[Matt]]></dc:creator>
		<pubDate>Fri, 05 Oct 2007 17:12:44 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/2007/10/05/c64-screen-memory-and-anti-debugging/#comment-3214</guid>
		<description><![CDATA[What is an example of this technique in a modern product?]]></description>
		<content:encoded><![CDATA[<p>What is an example of this technique in a modern product?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

