AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DLl-Injection HWND der Hostapplikation herausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

DLl-Injection HWND der Hostapplikation herausfinden

Ein Thema von Memnarch · begonnen am 24. Jan 2011 · letzter Beitrag vom 24. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 15:16
Tag,
ich experimentiere gerade mit DLL-Injections rum.
Klappt auch soweit.
Nur habe ich ein problem: Ich möchte innerhalb meiner DLL das HWND der hostapplikation, in das es injeziert wurde, herausbekommen, und das Klappt überhaupt nicht.

Ich schaffe es die PID, den Pfad zur applikation und den ExeNamen herauszubekommen.

Das gogolen und auch die sufu hier erbrachten nichts nützliches(zum testen soll mit hilfe des HWND einfach besagte applikation kurz per hide verschwinden und dann wieder erscheinen, und das funzt nicht)

Bin auch schon per enumWindows durch die fenster und habe die PIDs verglichen. Alles kein erfolg.
Super wäre natürlich sowas wie GetHwndfromPID, aber sowas scheints nicht zu geben >.<

EDIT: als testgebiet dient Wordpad (bin unter WinXp). Aber grundsätzlich soll es applikationsunabängig laufen.

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 15:17
Alle Fenster auflisten und dem Prozess zuordnen ginge schon. Aber was genau möchtest du denn erreichen? Es gibt schließlich Prozesse ganz ohne Fenster
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#3

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 15:31
Delphi-Quellcode:
function getProcessWinHandle(const PID: Integer): THandle;

  function MyEnumWindowProc(AHandle: THandle; EWD: PEnumWinData): boolean; stdcall;
  var
    ProcessID: THandle;
  begin
    ProcessID := 0;
    GetWindowThreadProcessID(AHandle, ProcessID);

    if (ProcessID = EWD.ProcessID) and IsWindow(AHAndle) then
    begin
      result := true;
      if EWD.WinHandle = 0 then
        EWD.WinHandle := AHandle;
    end
    else
      result := true;
  end;

var
  EWD : pENumWinData;
begin
   new(EWD);
   EWD.WinHandle := 0;
   EWD.ProcessID := PID;

   EnumWindows(@MyEnumWindowProc, Integer(EWD));
   Result := EWD.WinHandle;
   dispose(EWD);
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 15:35
Zitat:
Delphi-Quellcode:
if (ProcessID = EWD.ProcessID) and IsWindow(AHAndle) then
    begin
      result := true;
Müsste das nicht false heißen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#5

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 15:42
@Assarbard: Ich ziele imo nur auf Prozesse mit Fenster ab(wie wordpad).

@Mleyen: da sist aber mal ne abenteuerliche konstruktion mit ner funktion inner funktion o.O. Ich gucks mir mal an.

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#6

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 15:50
@Mleyen: da sist aber mal ne abenteuerliche konstruktion mit ner funktion inner funktion o.O. Ich gucks mir mal an.
Standard in Pascal. Keine Angst, daran ist nichts abenteuerlich. Im Gegenteil, es ist guter Programmierstil, da so die Callbackfunktion nicht außerhalb dieser (äußeren) Funktion sichtbar ist (es sei denn durch Aliasing).
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#7

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 15:56
Warum wird oben eigentlich nach THandle gefragt? Sind die prozessIds nicht eigentlich Cardinals?

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 16:00
Warum wird oben eigentlich nach THandle gefragt? Sind die prozessIds nicht eigentlich Cardinals?
Sind sie. Bzw. vorzeichenlose Ganzzahlen (LongWord).

Ist etwas, was vermutlich behoben werden sollte. Aber in Delphi sind (ohne 64bit-Compiler) THandle und Cardinal wohl noch identisch. Ein Handle hat normalerweise in C die Breite eines Pointers
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#9

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 16:04
Ah gut

Also es klappt einfach immernoch nicht o.O.

Die PID die meine DLL rausgibt, stimmt mit der überein, in die ich injeziert habe, allerdings findet der wohl kein HWND zu wordpad.....
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#10

AW: DLl-Injection HWND der Hostapplikation herausfinden

  Alt 24. Jan 2011, 16:06
Haste DeddyH's "Patch" auch drin?

Apropos: was steht denn in EWD.WinHandle?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz