Wie gegen diese drei Techniken zu verteidigen:
Create
Sie können die erste Technik (Create die Loadlibrary aufruft) verhindern, indem Loadlibrary Einhaken. In Ihrem Hook überprüfen Sie eine Liste von DLL-Namen, von denen Sie wissen, dass sie Teil des Prozesses sind und die geladen werden können, oder Sie können nach einer Liste bekannter DLLs suchen, die Sie nicht laden möchten.
Wenn Sie eine DLL finden, die Sie SetLastError (ERROR_ACCESS_DENIED) nicht laden möchten, geben Sie NULL zurück. Ich setze den letzten Fehler so, dass Leute, die Code schreiben, nach einem Fehlercode suchen, einen bekommen. Dies scheint zu funktionieren, vielleicht ist ein anderer Code geeigneter.
Das wird das Laden der DLL stoppen.
SetWindowsHookEx
Ich denke, die gleiche Technik für Create Blockierung für SetWindowsHookEx wird funktionieren, aber nur, wenn Sie Ihren Haken installiert werden können, bevor die SetWindowsHookEx Technik begonnen hat seinen Code zu laden (die in der Regel ist, wenn das erste Fenster erstellt wird, in einer App - so früh in seiner Lebenszeit).
Code Cave
Schöne Technik. Das vorher nicht gesehen. Sie können sich dagegen wehren, aber Sie müssen den LoadLibrary-Einstiegspunkt (nicht die IAT-Tabelle) anhängen, da die Code Cave LoadLibrary direkt aufruft.
Wie der Autor des Artikels kommentiert - gibt es viele Möglichkeiten, wie Sie angegriffen werden können und Sie werden wahrscheinlich eine harte Zeit haben, sie alle zu besiegen. Aber oft wollen Sie nur gegen bestimmte DLL-Lasten (wie eine bestimmte 3rd-Party-DLL, die mit Ihrer Software nicht kompatibel ist, weil die 3rd-Party-DLL nicht richtig geschrieben wurde, um die Tatsache zu berücksichtigen, dass ein anderer Hook auch vorhanden sein kann, also Sie blockieren, nur verteidigen es vom Laden).
Obwohl es wahr ist, dass es unmöglich ist ALLE Hacker zu stoppen, möchte ich nur diese drei aufgelisteten Techniken stoppen. Dies sind die meisten Befehle, und die Technik wird fast ausschließlich verwendet, aber die Mehrheit der Leechers und Script Kiddies. Just FYI, der Code ist in einer injizierten DLL, so alles, was ich tun möchte, ist sicherzustellen, dass, sobald ich drin bin, niemand sonst hinein kommen kann. –
Wohlgemerkt, die Loader-Sperre ist eine globale Ressource, und sie sollte (sollte) Grund zur sofortigen Kündigung sein. – MSalters
"kann jeder DLL-Injektion nutzen, um jedem Programm zusätzliche Funktionalität zu geben" - und meistens sogar abstürzen (mit dem Programm, das injiziert wird, weil der ahnungslose Benutzer für den Absturz verantwortlich gemacht wird). –