AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Hook soll virtuelle Tastencodes zurückliefern
Thema durchsuchen
Ansicht
Themen-Optionen

Hook soll virtuelle Tastencodes zurückliefern

Ein Thema von jfheins · begonnen am 16. Mai 2005 · letzter Beitrag vom 4. Jul 2005
Antwort Antwort
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

Hook soll virtuelle Tastencodes zurückliefern

  Alt 16. Mai 2005, 12:20
Also, ich habe die Hook-dll von Aya, die bei LuckieSpy dabei war.

Nun siehtihr code aber so aus:
Delphi-Quellcode:
function KeyboardProc(nCode: Integer; wParam: LongWord; lParam: LongWord): LongWord; stdcall;
var
  LastKey: Char;
  KeyState: TKeyboardState;
begin
  Result:=CallNextHookEx(hHook,nCode,wParam,lParam);
  if nCode<0 then
    Exit
  else begin
    KeyboardLayout:=GetKeyboardLayout(0);
    GetKeyboardState(KeyState);
    if ToAsciiEx(wParam,MapVirtualKeyEx(wParam,2,KeyboardLayout),KeyState,@LastKey,0,KeyboardLayout)>0 then
      Key:=Ord(LastKey) // Hier wird ein ASCII-Wert zurückgegeben
    else
      Key:=wParam; // Und hier ein virtueller Tastencode
    if (lParam and $80000000)=0 then
      if not (wParam in [16,17,18]) or GetShiftKeys then
        PostMessage(hwndBuffer^,WM_KEYBOARD_HOOK,Key,GetActiveWindow);
  end;
end;
Nun dachte ich, man könnte die ganzen Abfragen einfach wegmachen und das dann so schreiben:
Delphi-Quellcode:
  Result:=CallNextHookEx(hHook,nCode,wParam,lParam);
  if nCode<0 then
    Exit
  else begin
    if (lParam and $80000000)=0 then
      if not (wParam in [16,17,18]) or GetShiftKeys then
        PostMessage(hwndBuffer^,WM_KEYBOARD_HOOK,wParam,GetActiveWindow);
  end;
Nur ist jetzt folgendes Problem: sobald ich die dll kompiliere, und verwende gibt's immer beim Loslassen einer Taste einen Runtime-Error XXX

Sogar, wenn ich einfach nur den Source ohne Änderungen kompiliere.

Außerdem ist die erzeugte dll größer als die, die beim LuckieSpy dabei war, selbst wenn ich letztere mit upx entpacke ...

Ich brauche die VK', weil ich nachher die Tastenfolge wiedergeben möchte, und Keybd_Event einen VK will ...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Hook soll virtuelle Tastencodes zurückliefern

  Alt 2. Jul 2005, 11:21
Zitat von jfheins:
Nur ist jetzt folgendes Problem: sobald ich die dll kompiliere, und verwende gibt's immer beim Loslassen einer Taste einen Runtime-Error XXX

Sogar, wenn ich einfach nur den Source ohne Änderungen kompiliere.
Jetzt wäre a.) die Frage welche Delphiversion die beiden verwendet haben (API-Dekl. ändern sich manchmal mit den Versionen) und b.) ob du vielleicht mal das gesamte Projekt der DLL hier anhängen könntest, so daß ich es mir nicht zusammensuchen muß. Danke.

Zitat von jfheins:
Außerdem ist die erzeugte dll größer als die, die beim LuckieSpy dabei war, selbst wenn ich letztere mit upx entpacke ...
DLLs nie mit einem PE-Packer bearbeiten!!! PE/EXE notfalls, DLL, nein! Die Größe hängt von deiner Delphiversion ab.

Zitat von jfheins:
Ich brauche die VK', weil ich nachher die Tastenfolge wiedergeben möchte, und Keybd_Event einen VK will ...
Die Konvertierungsfunktionen sind ja gerade die, die du raufgeworfen hast. Warum beschwerst du dich also?
  Mit Zitat antworten Zitat
2. Jul 2005, 11:48
Dieses Thema wurde von "alcaeus" von "Sonstige Fragen zu Delphi" nach "Windows API / MS.NET Framework API" verschoben.
Esolit

Registriert seit: 27. Jun 2005
5 Beiträge
 
#4

Re: Hook soll virtuelle Tastencodes zurückliefern

  Alt 2. Jul 2005, 13:02
Zitat von Olli:
DLLs nie mit einem PE-Packer bearbeiten!!! PE/EXE notfalls, DLL, nein!
Kurze Zwischenfrage: Und wenn ich die DLL als Resource mit in die Exe einkompiliere und dann mit UPX packe? Was soll denn da schief gehen?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Hook soll virtuelle Tastencodes zurückliefern

  Alt 2. Jul 2005, 13:10
@Esolit: In diesem Fall extrahierst du ja die DLL aus der Exe bevor du diese mit LoadLibrary lädst und durch das extrahieren ist diese ja dann nicht mehr in der UPX Anwendung.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Esolit

Registriert seit: 27. Jun 2005
5 Beiträge
 
#6

Re: Hook soll virtuelle Tastencodes zurückliefern

  Alt 4. Jul 2005, 01:38
Zitat von SirThornberry:
@Esolit: In diesem Fall extrahierst du ja die DLL aus der Exe bevor du diese mit LoadLibrary lädst und durch das extrahieren ist diese ja dann nicht mehr in der UPX Anwendung.
Stimmt schon, aber trotzdem wurde sie ja vorher zusammen mit der *.exe durch den UPX-Packer bearbeitet, auch wenn sie in der exe selbst "drinsteckt". In Ollis Posting klingt es ein wenig so als wäre jede auch nur kleinste Bearbeitung einer DLL mit einem solchen Packer fatal...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: Hook soll virtuelle Tastencodes zurückliefern

  Alt 4. Jul 2005, 01:51
Zitat von Esolit:
Stimmt schon, aber trotzdem wurde sie ja vorher zusammen mit der *.exe durch den UPX-Packer bearbeitet, auch wenn sie in der exe selbst "drinsteckt". In Ollis Posting klingt es ein wenig so als wäre jede auch nur kleinste Bearbeitung einer DLL mit einem solchen Packer fatal...
Sorry, wenn das so klang. Aufgrund der völlig korrekten Antwort von SirThornberry habe ich keinen Grund gesehen hier zu reagieren.

Natürlich wird die DLL damit implizit auch gepackt. Allerdings ist sie ja vorher ungepackt als Ressource eingefügt worden. Logischerweise wird sie also bspw. zur Laufzeit der EXE auch wieder ungepackt extrahiert. Somit besteht kein Risiko.

Hingegen bei EXE-Packern mit denen man DLLs richtig explizit bearbeitet, zieht der Mechanismus von Windows nicht mehr, welcher es erlaubt die gleiche DLL im Speicher zwischen mehreren Prozessen zu teilen (im Sinne von "to share", nicht "to divide").
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Hook soll virtuelle Tastencodes zurückliefern

  Alt 4. Jul 2005, 21:34
Zitat von Olli:
Zitat von jfheins:
Ich brauche die VK', weil ich nachher die Tastenfolge wiedergeben möchte, und Keybd_Event einen VK will ...
Die Konvertierungsfunktionen sind ja gerade die, die du raufgeworfen hast. Warum beschwerst du dich also?
... weil er mir jetzt einen Runtime-Error gibt ? (Was komisch, dass es danach nicht weitergeht )

Projekt ? Ja, ok, such ich gleich mal. Bis dahin: Irgendwas muss doch an dem DLL-Sourcecode falsch sein, oder ?
Ich meine, zwischen D7 (ich) und D6 (Aya) dürften doch nicht derartige Unterschiede liegen...

(imho entspricht der Quellcode nicht der DLL ...)

Ich brauche es zwar inzwischen nicht mehr so dringend, aber nützlich ist's allemal
  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 08:35 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