AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fernzugriff auf eigenes Programm unterbinden
Thema durchsuchen
Ansicht
Themen-Optionen

Fernzugriff auf eigenes Programm unterbinden

Ein Thema von H4ndy · begonnen am 30. Jun 2008 · letzter Beitrag vom 10. Jul 2008
Antwort Antwort
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#1

Re: Fernzugriff auf eigenes Programm unterbinden

  Alt 10. Jul 2008, 10:36
So, nachdem ich nochmal einen halben Tag lang intensiv gesucht habe, konnte ich endliche eine Lösung finden!

Es gibt noch zwei Hook-Arten, die ich bisher übersehen oder schlicht nicht gefunden habe:
WH_KEYBOARD_LL sowie WH_MOUSE_LL

Diese beiden Low Level Hooks bieten in ihrem Flags einen Parameter an, welcher verrät, ob der Input "real" (Treiberebene) oder "Injected" (API-Ebene) ist.
Einzige Möglichkeit diesen Hook auszutricksen ist der Einsatz eines "Fake"-HID-Treibers, welcher den Input generiert oder man benutzt den Microsoft Remote Desktop. Den muss man sepperat über GetSystemMetrics abfragen.

Hier die entsprechenden MSDN-Seiten:Hier ein kleiner Code-Abriss (ich hab die THook-Klasse von Jens Borrisholt benutzt):

Delphi-Quellcode:
  { Structure used by WH_KEYBOARD_LL }
  KBDLLHOOKSTRUCT = record
    vkCode: DWORD;
    scanCode: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo: DWORD;
  end;
  PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;

  { Structure used by WH_MOUSE_LL }
  POINT = record
    x,y: longint;
  end;

  MSLLHOOKSTRUCT = record
    pt: POINT;
    mouseData: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo: DWORD;
  end;
  PMSLLHOOKSTRUCT = ^MSLLHOOKSTRUCT;

const
  LLMHF_INJECTED = 1;

{...}

procedure TfrmLLHookMain.KeyboardHookPreExecute(Hook: THook;
  var Hookmsg: THookMsg);
var
  pKeyHookStruct: PKBDLLHOOKSTRUCT;
  KeyHookStruct: KBDLLHOOKSTRUCT;
begin
  pKeyHookStruct := PKBDLLHOOKSTRUCT(Hookmsg.LParam);
  KeyHookStruct := pKeyHookStruct^;

  if KeyHookStruct.flags = LLKHF_INJECTED then
  begin
    lblKeyInjected.Caption := 'Keyboard: Is Injected Input';
    lblKeyInjected.Font.Color := clRed;
  end
  else
  begin
    lblKeyInjected.Caption := 'Keyboard: Is Real Input';
    lblKeyInjected.Font.Color := clGreen;
  end;
end;

procedure TfrmLLHookMain.MouseHookPreExecute(Hook: THook; var Hookmsg: THookMsg);
var
  pMouseHookStruct: PMSLLHOOKSTRUCT;
  MouseHookStruct: MSLLHOOKSTRUCT;
begin
  pMouseHookStruct := PMSLLHOOKSTRUCT(Hookmsg.LParam);
  MouseHookStruct := pMouseHookStruct^;

  if MouseHookStruct.flags = LLMHF_INJECTED then
  begin
    lblMouseInjected.Caption := 'Mouse: Is Injected Input';
    lblMouseInjected.Font.Color := clRed;
  end
  else
  begin
    lblMouseInjected.Caption := 'Mouse: Is Real Input';
    lblMouseInjected.Font.Color := clGreen;
  end;
end;
Vielen Dank an alle Helfer.
Die DP hat sich mal wieder bewährt ^^
Manuel
  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 00:58 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