Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]

  Alt 28. Mär 2016, 22:48
Praktisch alles was du machen willst, ist mit globalen WinAPI Hooks realisierbar. Dazu dürftest du im Netz eine Menge an Informationen finden. Grob beschrieben lenkst du die API Aufrufe aller gestarteten Programme auf eigene Callback-Funktionen um. In diesen Callbacks kannst du nun nach Belieben Input Parameter und Rückgabewerte modifizieren oder auch den Aufruf der originalen API einfach unterlassen.

Am Beispiel von MSDN-Library durchsuchenMessageBoxW:
Delphi-Quellcode:
function MessageBoxWCallback(hWnd: HWND; lpText, lpCaption: LPCWSTR; uType: UINT): Integer; stdcall;
begin
  if ((uType or MB_ICONERROR) = MB_ICONERROR) then
  begin
    // Wir moegen keine Fehlermeldungen
    Result := IDOK;
  end else
  begin
    // Fuer alles Andere rufen wir die Originalfunktion auf, aber aendern den Titel
    Result := MessageBoxWOrig(hWnd, lpText, 'Hook Title', uType);
  end;
end;
Für globale Hooks hast du zwei Methoden:
  • Usermode (ring3) Hooks, bei denen du deinen Code (meistens in Form einer DLL) in alle laufenden Prozess injizierst.
  • Kernelmode (ring0) Hooks, bei denen du in einem Treiber global die gewünschten Funktionen umlenkst (SSDT Hooking).

Beide Methoden haben Vor- und Nachteile. Beim Usermode Hooking benötigst du den Code in den meisten Fällen sowohl als 32-, als auch als 64-Bit Kompilat und musst zudem den Start neuer Prozesse überwachen (gut, das funktioniert mit einem MSDN-Library durchsuchenNtResumeThread Hook recht einfach).
Fürs Kernelmode Hooking brauchst du einen signierten Treiber. Zudem kann man seit Vista nicht mehr ohne Weiteres die SSDT patchen, da ein neues Sicherheits-Feature namens Patch-Guard integriert wurde. Für viele Fälle stellt Windows allerdings nativ Filter und Callbacks zur Verfügung.

Ob sich die Sache lohnt, ist allerdings eine andere Frage: Hooks werden von existierender AntiViren Software oft als schädliche Modifikation erkannt. Außerdem gillt (insbesondere bei Ring3 Hooks): Sofern ein Programm damit rechnet, gehookt zu werden, ist der Aufwand die Hooks zu umgehen nicht sonderlich groß.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (28. Mär 2016 um 22:54 Uhr)
  Mit Zitat antworten Zitat