AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) uallCollection bringt Zielprozess mit WriteLn zum absturz...
Thema durchsuchen
Ansicht
Themen-Optionen

uallCollection bringt Zielprozess mit WriteLn zum absturz...

Ein Thema von InfixIterator · begonnen am 22. Dez 2012 · letzter Beitrag vom 21. Jan 2013
Antwort Antwort
brechi

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

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
InfixIterator

Registriert seit: 25. Nov 2007
16 Beiträge
 
#2

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

  Alt 21. Jan 2013, 18:21
Vielen Dank erstmal für die Antworten!!!
(Und auch Entschuldigung für die sehr späte Antwort von mir)

Ich habe nochmal etwas herum probiert:
Also wenn ich das gleiche in Grün nur als DLL Datei mache und dann injecte,
dann funktioniert das mit dem WriteLn perfekt (genauso wie ich es mit der C++ Detour Funktion von Microsoft vorher schon getestet hatte).
Aber alles in der exe und dann mit InjectMe, klappt immer noch nicht und bringt die Zielanwendung zum Absturz. Das Beispiel von Dir brechi, klappt leider nicht. Ich habe etwas herum probiert und gemerkt, dass man offensichtlich schon Zugriff auf die Konsole hat, unabhängig davon, ob man AllocConsole macht, oder nicht. Zum Beispiel kann man die Konsolenausgaben-Farbe problemlos verändern. Mit:
Delphi-Quellcode:
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                         FOREGROUND_INTENSITY OR FOREGROUND_GREEN //grün
                                          or BACKGROUND_RED ); //mit rotem Hintergrund
Gibt es eigentlich weitere Möglichkeiten aus einer exe heraus einen Zielprozess zu hooken?
(Außer die injectMe funktion und auch ohne eine dll zu injezieren?)
Ich dachte an sowas wie HookCode nur in der exe ausgeführt und nicht in der injezierten dll.
Ansonsten ist das injezieren einer dll ja auch kein Problem und sehr mächtig. Und mit der injectMe
Funktion kann man ja auch quasi alles (bis auf die Konsolenausgabe) machen.
Bin halt nur neugierig welche Möglichkeiten es so gibt

Vielen Dank nochmal für die Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort


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:39 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