I went ahead and went back to as far as 2.045 and I still couldn't get a working dll. This would suggest something is wrong with my dll injection code but I've tested with a few other random dll's and that appears to work. according to my debugger the problem is an access violation while executing the main function of the D dll.<div>
the code I use for injecting is </div><div><div><br></div><div>/**</div><div>* injectDLL injects a dll in a given process using the CreateRemoteThread function.</div><div>* </div><div>* arguments:</div><div>*  HANDLE proc = A HANDLE to the process</div>
<div>*  string dllName =<span class="Apple-tab-span" style="white-space:pre">   </span>A string containting the name of the dll</div><div>**/</div><div>void injectDLL(HANDLE proc,string  dllName)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>//first we need to get a pointer to the loadlibrary function</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>LPVOID LoadLibAddy = cast(LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>//The problem is that we need to pass an argument(string) but that string is in our memory space</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>//so we have to allocate space to write our dllName to using writeprocessmemory</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>LPVOID RemoteString = VirtualAllocEx(proc,null,dllName.length,MEM_COMMIT | MEM_RESERVE,PAGE_READWRITE);</div><div><span class="Apple-tab-span" style="white-space:pre">      </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>//write the dllName</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>WriteProcessMemory(proc,RemoteString,toStringz(dllName),dllName.length,null);</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>//create a thread in the remote process loading the dll</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>CreateRemoteThread(proc, null, 0, cast(LPTHREAD_START_ROUTINE)LoadLibAddy, cast(LPVOID)RemoteString, 0, null); </div>
<div>}</div><br><div class="gmail_quote">Op 28 maart 2012 13:13 schreef Trass3r <span dir="ltr"><<a href="mailto:un@known.com">un@known.com</a>></span> het volgende:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
this works on every dll I try to inject apart from dll's written in D<br>
(starting with dmd version 2,054 or something like that).<br>
</blockquote>
<br></div>
If this is a regression, please narrow it down to the exact version.<br>
</blockquote></div><br></div>