Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL Funkt. Statisch/Dynamisch einbinden > Vor und Nachteile? (https://www.delphipraxis.net/105362-dll-funkt-statisch-dynamisch-einbinden-vor-und-nachteile.html)

richard_boderich 20. Dez 2007 14:00


DLL Funkt. Statisch/Dynamisch einbinden > Vor und Nachtei
 
Hallo allerseits!

Ich wollte mal Fragen wo genau die Vorteile und Nachteile beider Methoden liegen? Besonders interessiert mich dies im Bezug auf Resistenz gegen Hooks.
Sprich welche Methode ist hinterher schwerer zu hooken? Oder mach es keinen Unterschied? Gibt es eventuell Maßnahmen um Hooking auf NTDLL Funktionen zu verhindern bzw. zu erkennen.

mfG Richard

Der_Unwissende 20. Dez 2007 14:49

Re: DLL Funkt. Statisch/Dynamisch einbinden > Vor und Nac
 
Hi,
was das Hooking angeht, so kann ich leider nicht viel dazu sagen.

Allgemein unterscheiden sich die beiden Varianten vorallem im Zeitpunkt der Bindung. Da DLLs gerade entworfen wurden, um das dyn. Binden zu erlauben, kommt die dyn. Bindung dem entsprechend näher. Hier kann der Code genau dann geladen werden, wenn er benötigt wird (und danach eben auch wieder entladen). Das schont ggf. Ressourcen. Vorallem aber ermöglicht dieses Verfahren es, dass man erstmal schaut, ob eine Datei gibt, die gebunden werden kann. Das Vorhandensein von Dateien lässt sich vorab prüfen und Fehler können leicht behandelt werden. Insbesondere kann man auch unbekannte DLLs laden (bei denen die Schnittstelle, aber nicht der Name bekannt ist, z.B. Plugins).
Für die statische Bindung spricht eigentlich nur die einfachere Syntax, da der Code zum Laden (auch nicht weiter kompliziert) entfällt. Hier muss jedoch der Name der Datei schon zur Übersetzungszeit bekannt sein, wird die zugehörige DLL nicht gefunden, löst dies immer eine Ausnahme aus.

Gruß Der Unwissende

oki 20. Dez 2007 16:24

Re: DLL Funkt. Statisch/Dynamisch einbinden > Vor und Nac
 
Hi,

wird eine DLL statisch geladen und ist dann nicht vorhanden, gibt es eine Fehlermeldung und dein Programm ist weg. Beim dynamischen laden kannst du vernunftig reagieren. Benötigt nur ein AddOn deines Programmes die DLL, so ist es blöd, wenn das Proggi ohne DLL nicht läuft. Reagierst du beim dynamischen Laden darauf, funzt dein Proggi weiter, nur die zusätzliche DLL-funktionalität nicht.

Das war jetzt sehr populärwissenschaftich gesprochen, trifft aber einen praktischen Aspekt. :mrgreen:

Was der Unwissende da gesagt hat hört sich natürlich viel toller an.

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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