Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#3

AW: uallCollection bringt Zielprozess mit WriteLn zum absturz...

  Alt 6. Jan 2013, 20:35
Hi,
die InjectMe Funktion habe ich nur eingebaut, damit man nicht immer noch eine Dll schreiben muss. Da die Exe als Dll in den Zielprozess geladen wird, kannst du Handles (z.B. die Console) die du im Main deiner Exe geladen hast nicht weiterverwenden. Also auch wenn du z.B. im Hauptprogramm einen Stream oeffnest, kannst du diesen in deiner Hook-Funktion nicht weiterverwenden.
Du solltest aber eine zweite Console im Zielprozess oeffnen koennen (AllocConsole). Hooken ueber Prozessgrenzen ist nicht moeglich (nur mit viel Aufwand ueber IPC, siehe Virtueller Adressraum).

vill hillft dir sowas:
Delphi-Quellcode:

function callbackUmleitung(a:Double): Double; stdcall;
begin
  if FirstCall then begin
    FirstCall := false;
    AllocConsole;
  end;
  Writeln('original function: argument = '+FloatToStr(a) ); //bringt Project1.exe zum absturz...
  a:=50.1337;
  Result := OriginalFunction(a); //Wert wurde erfolgreich geändert und die Ursprüngliche Funktion wird aufgerufen (mit dem neuen Wert)
end;
Ansonsten muesse es auch eine Moeglichkeit geben, im Zielprozess auf Exe-Main zu reagieren, muesse ich aber selbst erstmal nachschauen...
  Mit Zitat antworten Zitat