<?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: Vista ASLR is not on by default for image base addresses</title>
	<atom:link href="http://www.nynaeve.net/index.php?feed=rss2&#038;p=100" rel="self" type="application/rss+xml" />
	<link>http://www.nynaeve.net/?p=100</link>
	<description>Adventures in Windows debugging and reverse engineering.</description>
	<lastBuildDate>Tue, 24 Aug 2010 12:05:39 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: nova</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-24712</link>
		<dc:creator>nova</dc:creator>
		<pubDate>Fri, 04 Apr 2008 23:29:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-24712</guid>
		<description>@amit: one way, you can use the ASLRdynamicbase.py script with Immunity Debugger

the script can be found here (you&#039;ll need to make an account tho)
http://www.openrce.org/repositories/browse/Faithless</description>
		<content:encoded><![CDATA[<p>@amit: one way, you can use the ASLRdynamicbase.py script with Immunity Debugger</p>
<p>the script can be found here (you&#8217;ll need to make an account tho)<br />
<a href="http://www.openrce.org/repositories/browse/Faithless" rel="nofollow">http://www.openrce.org/repositories/browse/Faithless</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Amit</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-23459</link>
		<dc:creator>Amit</dc:creator>
		<pubDate>Fri, 22 Feb 2008 07:57:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-23459</guid>
		<description>How can I detect whether the given assembly is having the PE header &quot;DLL flags&quot; set to 0x0040</description>
		<content:encoded><![CDATA[<p>How can I detect whether the given assembly is having the PE header &#8220;DLL flags&#8221; set to 0&#215;0040</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1330</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Thu, 11 Jan 2007 05:31:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1330</guid>
		<description>OK. I fully understand it. Thanks a lot.
I ask those qustion because I wonder if following method is possible after ASLR.
http://www.codeproject.com/useritems/selfdel.asp
It seems it still can work in IA32. 
Thanks again.</description>
		<content:encoded><![CDATA[<p>OK. I fully understand it. Thanks a lot.<br />
I ask those qustion because I wonder if following method is possible after ASLR.<br />
<a href="http://www.codeproject.com/useritems/selfdel.asp" rel="nofollow">http://www.codeproject.com/useritems/selfdel.asp</a><br />
It seems it still can work in IA32.<br />
Thanks again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Skywing</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1327</link>
		<dc:creator>Skywing</dc:creator>
		<pubDate>Thu, 11 Jan 2007 04:38:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1327</guid>
		<description>1. There is one randomization for a particular DLL per lifetime of the section object (typically, per boot).  All processes will use the same randomization set if they load that DLL, which means it&#039;ll try to put it at the same base address.  Relocations for ASLR are performed only for physical pages being in-paged, so ASLR-relocated pages are typically shared between processes unless written to.
2. Sure, that&#039;s possible.  Vista&#039;s ASLR is only really designed to protect against remote attacks where it is not easy to determine the memory layout - against local attacks, where an attacker could load a DLL to find its randomization address, it&#039;s not particularly effective (nor is it really designed to be in this case).</description>
		<content:encoded><![CDATA[<p>1. There is one randomization for a particular DLL per lifetime of the section object (typically, per boot).  All processes will use the same randomization set if they load that DLL, which means it&#8217;ll try to put it at the same base address.  Relocations for ASLR are performed only for physical pages being in-paged, so ASLR-relocated pages are typically shared between processes unless written to.<br />
2. Sure, that&#8217;s possible.  Vista&#8217;s ASLR is only really designed to protect against remote attacks where it is not easy to determine the memory layout &#8211; against local attacks, where an attacker could load a DLL to find its randomization address, it&#8217;s not particularly effective (nor is it really designed to be in this case).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1326</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Thu, 11 Jan 2007 02:38:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1326</guid>
		<description>Thanks for your reply! You are so nice. I still get confusion ideas:
1. As my understanding, Dlls like kernel32.dll can have one copy of image in memory because it most likely is mapped to same address in those processes which use it. So the relocation will properly never happen. If relocation happens in one process, we will get new copy of dll(code changed) in memory and relocation takes time. So after using ASLR, whenever and wherever relocation happened, code are changed. Do you think it will take time and space to do that?
2. For example, I build a Trojan with this switch. A victim got it. After reboot, my Trojan get to run. It want to inject shellcode into explore.exe. The shellcode has to do some system call, using functions in kernel32.dll for instance. Because image base address changes only after reboot, the Trojan can get function address from its own process and fix the function pointer in shellcode. Then the bad thing will happen. God bless the victim. :) Do you think it will happen?</description>
		<content:encoded><![CDATA[<p>Thanks for your reply! You are so nice. I still get confusion ideas:<br />
1. As my understanding, Dlls like kernel32.dll can have one copy of image in memory because it most likely is mapped to same address in those processes which use it. So the relocation will properly never happen. If relocation happens in one process, we will get new copy of dll(code changed) in memory and relocation takes time. So after using ASLR, whenever and wherever relocation happened, code are changed. Do you think it will take time and space to do that?<br />
2. For example, I build a Trojan with this switch. A victim got it. After reboot, my Trojan get to run. It want to inject shellcode into explore.exe. The shellcode has to do some system call, using functions in kernel32.dll for instance. Because image base address changes only after reboot, the Trojan can get function address from its own process and fix the function pointer in shellcode. Then the bad thing will happen. God bless the victim. :) Do you think it will happen?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Skywing</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1313</link>
		<dc:creator>Skywing</dc:creator>
		<pubDate>Wed, 10 Jan 2007 16:33:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1313</guid>
		<description>1. Negligible performance impact.  This is due to some clever tricks done on Microsoft&#039;s part, and the fact that there is only ever one randomized instance of an image in-play on any given system at a time.  Specifically, Vista ASLR takes care of the relocation problem by moving relocations from the user mode loader and into the memory manager.  Vista now performs relocations on the fly as pages are in-paged from disk instead of doing them all up front.  Relocations can be discarded if memory pressure forces otherwise un-modified pages to be removed, and then seemlessly reapplied during the in-paging process.  This mechanism requires no additional storage to contain the relocated versions of images, and thus minimizes the negative performance impact of ASLR.

2. This is only likely to occur for images which were either built without relocations or built without /dynamicbase.  Note that there are only 256 possibilities, so with enough reboots it is probable that you&#039;ll eventually see a duplicate.</description>
		<content:encoded><![CDATA[<p>1. Negligible performance impact.  This is due to some clever tricks done on Microsoft&#8217;s part, and the fact that there is only ever one randomized instance of an image in-play on any given system at a time.  Specifically, Vista ASLR takes care of the relocation problem by moving relocations from the user mode loader and into the memory manager.  Vista now performs relocations on the fly as pages are in-paged from disk instead of doing them all up front.  Relocations can be discarded if memory pressure forces otherwise un-modified pages to be removed, and then seemlessly reapplied during the in-paging process.  This mechanism requires no additional storage to contain the relocated versions of images, and thus minimizes the negative performance impact of ASLR.</p>
<p>2. This is only likely to occur for images which were either built without relocations or built without /dynamicbase.  Note that there are only 256 possibilities, so with enough reboots it is probable that you&#8217;ll eventually see a duplicate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1303</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Wed, 10 Jan 2007 10:01:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1303</guid>
		<description>Hi, I have lots of question about ASLR:
1. Original windows dlls from MS have been carefully build to diff address to avoid runtime relocation. After ASLR, is there big impact on performance? Do all these dll need to be relocated?
2. After reboot, does any process have same address of some functiones from other dll ( such as ExitProcess). It is happned on WinXP. So if I can run a process on target machine, I still can inject some shellcode into other process like explore.exe, and the shellcode can call kernel function, address of which comes from former process. Is it true?
Thanks.</description>
		<content:encoded><![CDATA[<p>Hi, I have lots of question about ASLR:<br />
1. Original windows dlls from MS have been carefully build to diff address to avoid runtime relocation. After ASLR, is there big impact on performance? Do all these dll need to be relocated?<br />
2. After reboot, does any process have same address of some functiones from other dll ( such as ExitProcess). It is happned on WinXP. So if I can run a process on target machine, I still can inject some shellcode into other process like explore.exe, and the shellcode can call kernel function, address of which comes from former process. Is it true?<br />
Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maxim Masiutin</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1217</link>
		<dc:creator>Maxim Masiutin</dc:creator>
		<pubDate>Fri, 05 Jan 2007 15:12:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1217</guid>
		<description>Thank you very much, Skywing!

BTW, your blog is very interesting.</description>
		<content:encoded><![CDATA[<p>Thank you very much, Skywing!</p>
<p>BTW, your blog is very interesting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Skywing</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1169</link>
		<dc:creator>Skywing</dc:creator>
		<pubDate>Wed, 03 Jan 2007 18:45:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1169</guid>
		<description>The value returned by GetProcAddress can be thought of a 32-bit RVA from the image base of the associated module.  So unless the module base has changed since the last time you recalled it (in the most common case, after a reboot), then you&#039;ll get the same address back for a particular exported symbol.</description>
		<content:encoded><![CDATA[<p>The value returned by GetProcAddress can be thought of a 32-bit RVA from the image base of the associated module.  So unless the module base has changed since the last time you recalled it (in the most common case, after a reboot), then you&#8217;ll get the same address back for a particular exported symbol.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maxim Masiutin</title>
		<link>http://www.nynaeve.net/?p=100&#038;cpage=1#comment-1154</link>
		<dc:creator>Maxim Masiutin</dc:creator>
		<pubDate>Tue, 02 Jan 2007 21:50:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.nynaeve.net/?p=100#comment-1154</guid>
		<description>Thank you! Is it intended by Microsoft that ASLR doesn&#039;t affect the results of GetProcAddress? E.g. it always returns 0×7700D85E as an address for ExitProcess() API function. Does it mean that I can simply jump to 0×7700D85E to get this API function called? What is the point of ASLR then?</description>
		<content:encoded><![CDATA[<p>Thank you! Is it intended by Microsoft that ASLR doesn&#8217;t affect the results of GetProcAddress? E.g. it always returns 0×7700D85E as an address for ExitProcess() API function. Does it mean that I can simply jump to 0×7700D85E to get this API function called? What is the point of ASLR then?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.342 seconds -->
