<?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: LoadDLLViaAppInit</title>
	<atom:link href="http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/</link>
	<description>(blog 'DidierStevens)</description>
	<lastBuildDate>Wed, 08 Feb 2012 19:23:01 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Exploit writing tutorial part 11 : Heap Spraying Demystified &#124; Corelan Team</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-49203</link>
		<dc:creator><![CDATA[Exploit writing tutorial part 11 : Heap Spraying Demystified &#124; Corelan Team]]></dc:creator>
		<pubDate>Sun, 01 Jan 2012 06:53:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-49203</guid>
		<description><![CDATA[[...] is delivered as a dll file.  You can make sure the dll gets loaded into every process using LoadDLLViaAppInit or by including the heaplocker dll in the IAT of the application you want to [...]]]></description>
		<content:encoded><![CDATA[<p>[...] is delivered as a dll file.  You can make sure the dll gets loaded into every process using LoadDLLViaAppInit or by including the heaplocker dll in the IAT of the application you want to [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-40399</link>
		<dc:creator><![CDATA[Didier Stevens]]></dc:creator>
		<pubDate>Wed, 27 Oct 2010 21:34:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-40399</guid>
		<description><![CDATA[@bluegene I don&#039;t know where you got the idea that this is designed to load DLLs inside malware?
It is not. If you read the older posts I&#039;m referring too, you&#039;ll see that it is designed as an alternative to load DLLs inside user programs you want to protect, like AcroRd32.exe

It will not load in every process, like you said, only in processes that load user32.dll. I&#039;ve discussed alternatives to this method in older posts. Furthermore, this DLL is designed to unload automatically after it has done its work, it will never remain loaded. I coded the DLL to avoid undesirable results. For example, this DLL uses only kernel32 functions. That is why the configuration is written in a text file and not in the registry.
The reason why Microsoft discourages using this key in their KB article, is that they don&#039;t garantee that this feature will be available in newer versions of Windows.]]></description>
		<content:encoded><![CDATA[<p>@bluegene I don&#8217;t know where you got the idea that this is designed to load DLLs inside malware?<br />
It is not. If you read the older posts I&#8217;m referring too, you&#8217;ll see that it is designed as an alternative to load DLLs inside user programs you want to protect, like AcroRd32.exe</p>
<p>It will not load in every process, like you said, only in processes that load user32.dll. I&#8217;ve discussed alternatives to this method in older posts. Furthermore, this DLL is designed to unload automatically after it has done its work, it will never remain loaded. I coded the DLL to avoid undesirable results. For example, this DLL uses only kernel32 functions. That is why the configuration is written in a text file and not in the registry.<br />
The reason why Microsoft discourages using this key in their KB article, is that they don&#8217;t garantee that this feature will be available in newer versions of Windows.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bluegene</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-40397</link>
		<dc:creator><![CDATA[bluegene]]></dc:creator>
		<pubDate>Wed, 27 Oct 2010 16:58:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-40397</guid>
		<description><![CDATA[It will only work with executables which load user32.dll. Most malicious applications don&#039;t need user32.dll. Another issue with this approach is, that it will inject in every process, which may produce undesirable results. 

http://support.microsoft.com/kb/197571]]></description>
		<content:encoded><![CDATA[<p>It will only work with executables which load user32.dll. Most malicious applications don&#8217;t need user32.dll. Another issue with this approach is, that it will inject in every process, which may produce undesirable results. </p>
<p><a href="http://support.microsoft.com/kb/197571" rel="nofollow">http://support.microsoft.com/kb/197571</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Update: LoadDLLViaAppInit &#171; Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-40386</link>
		<dc:creator><![CDATA[Update: LoadDLLViaAppInit &#171; Didier Stevens]]></dc:creator>
		<pubDate>Tue, 26 Oct 2010 09:04:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-40386</guid>
		<description><![CDATA[[...] Filed under: My Software,Update &#8212; Didier Stevens @ 9:04   This new version of LoadDLLViaAppInit allows you to load more than one DLL inside a process. You separate the DLL names with a semi-colon [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Filed under: My Software,Update &#8212; Didier Stevens @ 9:04   This new version of LoadDLLViaAppInit allows you to load more than one DLL inside a process. You separate the DLL names with a semi-colon [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: LowerMyRights &#171; Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-40220</link>
		<dc:creator><![CDATA[LowerMyRights &#171; Didier Stevens]]></dc:creator>
		<pubDate>Mon, 11 Oct 2010 08:41:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-40220</guid>
		<description><![CDATA[[...] as it is loaded inside every process (even at boot time), so please test first. Or else you use LoadDLLViaAppInit, or add it to the import table like explained [...]]]></description>
		<content:encoded><![CDATA[<p>[...] as it is loaded inside every process (even at boot time), so please test first. Or else you use LoadDLLViaAppInit, or add it to the import table like explained [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-37510</link>
		<dc:creator><![CDATA[Didier Stevens]]></dc:creator>
		<pubDate>Fri, 22 Jan 2010 09:19:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-37510</guid>
		<description><![CDATA[True, I&#039;ve another unreleased DLL doing this. But like you started, I need more flexibility.]]></description>
		<content:encoded><![CDATA[<p>True, I&#8217;ve another unreleased DLL doing this. But like you started, I need more flexibility.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Myers</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-37509</link>
		<dc:creator><![CDATA[Mike Myers]]></dc:creator>
		<pubDate>Thu, 21 Jan 2010 23:41:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-37509</guid>
		<description><![CDATA[I realize this approach allows a lot of flexibility, but you could also just change the code for your injected DLL: in DllMain(), check if the fdwReason parameter is DLL_PROCESS_ATTACH, and then check the process name via GetModuleFileName(NULL, szProcess, sizeof(szProcess)). Then decide to load or not. If not, return FALSE from DllMain().]]></description>
		<content:encoded><![CDATA[<p>I realize this approach allows a lot of flexibility, but you could also just change the code for your injected DLL: in DllMain(), check if the fdwReason parameter is DLL_PROCESS_ATTACH, and then check the process name via GetModuleFileName(NULL, szProcess, sizeof(szProcess)). Then decide to load or not. If not, return FALSE from DllMain().</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-37353</link>
		<dc:creator><![CDATA[Didier Stevens]]></dc:creator>
		<pubDate>Tue, 29 Dec 2009 20:00:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-37353</guid>
		<description><![CDATA[@Harlan All processes (CUI and GUI), provided they load user32.dll (most applications do).]]></description>
		<content:encoded><![CDATA[<p>@Harlan All processes (CUI and GUI), provided they load user32.dll (most applications do).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: H. Carvey</title>
		<link>http://blog.didierstevens.com/2009/12/23/loaddllviaappinit/#comment-37333</link>
		<dc:creator><![CDATA[H. Carvey]]></dc:creator>
		<pubDate>Thu, 24 Dec 2009 18:10:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1885#comment-37333</guid>
		<description><![CDATA[Didier,

Does this work with *all* processes or only GUI-based apps?

http://support.microsoft.com/kb/197571]]></description>
		<content:encoded><![CDATA[<p>Didier,</p>
<p>Does this work with *all* processes or only GUI-based apps?</p>
<p><a href="http://support.microsoft.com/kb/197571" rel="nofollow">http://support.microsoft.com/kb/197571</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

