[c++] Casting DWORD to HANDLE

Anbrix

Mitglied
Hallo zusammen =)

Folgendes liegt vor:

Ich habe ein Programm bzw. Loader A, welches Programm B über CreateProcess startet.
Mein Vorhaben ist es, noch einen weiteren Loader zu schreiben, welcher Loader A startet.
Soweit alles gut, mein Loader liest die korrekte ProzessID von Programm B aus Loader A hinaus, als DWORD.

Nun möchte ich meine DLL injizieren (in Programm B) und brauche daher Funktionen wie

Code:
LPVOID WINAPI VirtualAllocEx(
  __in      HANDLE hProcess,
  __in_opt  LPVOID lpAddress,
  __in      SIZE_T dwSize,
  __in      DWORD flAllocationType,
  __in      DWORD flProtect
);

wobei die ProcessID in dem Fall ja typedef void *HANDLE ist.
Ich komme jetzt nun einfach nicht weiter mit dem Cast von DWORD in HANDLE, GetLastError spuckt mir ERROR_INVALID_HANDLE für VirtualAllocEx und alle weiteren Funktionen aus, da ich aber mit Wark13 die PID als richtig bestätigen kann, muss es wohl daran liegen dass all meine bischerigen cast-Versuche gescheitert sind ^^

Danke im Vorraus ^.^
MfG
 
mit dem ersten parameter von VirtualAllocEx() ist nicht die process id gemeint, sondern ein handle zu einem geöffneten prozess, siehe dazu OpenProcess()
 
Hallo,

ich bin gerade im Betrieb und weiß nich ob ich externe Links posten darf. Aus Zeitgründen kann ich da im Moment auch nicht nachschauen also hoffe ich das es einfach gelöscht wird falls dies nötig ist.

Ich habe vor einiger Zeit einen DLL Injector released der mit CreateRemoteThread arbeitet da ich eine neue Methode (Memory Mapping) benutze.
Falls da Interesse besteht schau es dir einfach mal an Anbrix. Dort wird auch VirtualAllocEx() benutzt um Memory zu Allocieren.

Hoffe es Hilft dir weiter,
Frank

Link: http://www.ucdownloads.com/downloads/downloads.php?do=file&id=3462
 
Zurück