Dll im fremden Prozess laden über Create Remote Thread

Code:
 DWORD ThreadId;
  HANDLE hExp = GetProcessHandle("explorer.exe",PROCESS_ALL_ACCESS);
  std::string DllPath = "C:\\DEBUG_DLL.DLL";


  /*

  LPVOID WINAPI VirtualAllocEx(
  __in      HANDLE hProcess,
  __in_opt  LPVOID lpAddress,
  __in      SIZE_T dwSize,
  __in      DWORD flAllocationType,
  __in      DWORD flProtect
);
  */
  SIZE_T WB;
  unsigned BaseAddr = (unsigned)VirtualAllocEx( hExp, NULL, DllPath.length() + 50, MEM_COMMIT, PAGE_READWRITE );
  int BufferLen = DllPath.length() + 10;
  char * Buffer = new char[BufferLen];
  std::fill(Buffer,Buffer+BufferLen,0);
  std::copy(DllPath.begin(),DllPath.end(),Buffer);

  if ( !WriteProcessMemory( hExp, (LPVOID)BaseAddr, Buffer, BufferLen, &WB ) )
    MessageBox(NULL,"Failed!","OMG",MB_OK);

  //LPTHREAD_START_ROUTINE Pointer = (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"LoadLibraryA");
  if ( !CreateRemoteThread( hExp,
                            NULL,
                            0,
                            (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"LoadLibraryA"),
                            (LPVOID)BaseAddr,
                            0,
                            &ThreadId ) )
    MessageBox(NULL,"Failed!","OMG",MB_OK);
 CloseHandle(hExp);

das ist derzeitig mein code, mein konzept.


-> Den parameter für load libary in den externen prozess schreiben
-> Die funktion mit der adresse von load libary und der start adresse des strings aufrufen und fertig

o.o...

nur leider funzt das ganze nicht so ^^

überprüft hab ich ->

allokierung im externen prozess - geht
schreiben des strings - geht
erzeugen des neuen thread - ???

edit:

DLL name hat nicht gestimmt, naja wenigstens zeigts ne schöne methode :|
 
Zurück
Oben