DLL Injection
    s0beit 
    s0beit at myg0t.com
       
    Sat Dec  1 03:24:50 PST 2012
    
    
  
Alright, at the end of my long search I have finally concluded 
that this is some sort of threading problem.
Any D module loaded in a new thread, from a C/++ application will 
crash. The solution, I believe, in this case might be to hijack 
the program's "main" thread and execute your LoadLibrary call 
there.
When you call LoadLibrary on a D module from a C++ application's 
"main" function, everything is fine. When you call it with a 
newly created thread (CreateThread or CreateRemoteThread) it will 
crash universally. I have not found a remedy to this issue, but 
the method to inject your module by hijacking the thread might 
work. It's an older method of injection since before CreateThread 
APIs came along, but the basic idea is that you get the handle to 
the program's primary thread, get the context and force the Eip 
to your destination which calls LoadLibrary. Then you JMP back to 
the old Eip.
I'll post here if I have any success with it, I am currently too 
busy to test my theory.
    
    
More information about the Digitalmars-d-learn
mailing list