AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL Injection von Memory in anderen Prozess

Ein Thema von snapseep · begonnen am 24. Jul 2015 · letzter Beitrag vom 28. Jul 2015
 
snapseep

Registriert seit: 24. Jul 2015
6 Beiträge
 
#9

AW: DLL Injection von Memory in anderen Prozess

  Alt 27. Jul 2015, 06:44
Habe leider vergeblich den gestrigen Abend damit verbracht BTMemoryModule umzuschreiben mit VirtualAllocEx und den von Zacherl genannten Änderungen (wpm, createremotethread,... ).

Die Herangehensweise die Exe zu injecten finde ich sehr interessant.

Habe mir daszu mal den passenden Text aus der msdn Hilfe kopiert:

The name of the module. This can be either a library module (a .dll file) or an executable module (an .exe file). .
Anschließend habe ich eine kleine simpleexe.exe erstellt, die ich in IrfanView injected habe.

Das hat auch soweit geklappt:



Nur weiß ich jetzt noch nicht so recht, wie ich beispielsweise direkt Code beim injecten der Exe im Zielprozess ausführen kann.

Sofern man eine Dll injected wird automatisch DllMain ausgeführt.

Bei der Injection gehe ich folgendermaßen vor:

Delphi-Quellcode:
function InjectExe(const pid: DWORD; exedir: PWideChar): Boolean;
var
  dwThreadID: Cardinal;
  hProc, hKernel: THandle;
  BytesToWrite, BytesWritten: SIZE_T;
  pRemoteBuffer, pLoadLibrary: Pointer;
  hThread: THandle;

begin
  Result := True;

  hProc := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_QUERY_INFORMATION or
    PROCESS_VM_OPERATION or PROCESS_VM_WRITE or PROCESS_VM_READ, False, pid);

  if hProc = 0 then
    Exit(False);

  try
    BytesToWrite := SizeOf(WideChar) * (Length(exedir) + 1);
    pRemoteBuffer := VirtualAllocEx(hProc, nil, BytesToWrite, MEM_COMMIT,
      PAGE_READWRITE);

    if pRemoteBuffer = nil then
      Exit(False);

    try
      if not WriteProcessMemory(hProc, pRemoteBuffer, exedir, BytesToWrite, BytesWritten) then
        Exit(False);

      hKernel := GetModuleHandleW('kernel32.dll');
      pLoadLibrary := GetProcAddress(hKernel, 'LoadLibraryW');

      hThread := CreateRemoteThread(hProc, nil, 0, pLoadLibrary, pRemoteBuffer, 0, dwThreadID);

      try
        WaitForSingleObject(hThread, INFINITE);
      finally
        CloseHandle(hThread);
      end;

    finally
      VirtualFreeEx(hProc, pRemoteBuffer, 0, MEM_RELEASE);
    end;

  finally
    CloseHandle(hProc);
  end;

end;
Gibt es eine Möglichkeit Code direkt beim Injecten der Exe auf diese Weise auszuführen?
Angehängte Grafiken
Dateityp: jpg ide.jpg (25,4 KB, 88x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz