Der Einstiegspunkt des DLL Register Server ist nicht an einem bestimmten Ort innerhalb der DLL selbst wie einer benannten Funktion gefunden. Stattdessen wird es implizit durch den Export einer bestimmten Funktion *durch den DLL mit einem bestimmten Namen *definiert. Das Betriebssystem (insbesondere das Dienstprogramm "Regsvr32.exe") sucht nach dieser Funktion basierend auf seinem Namen und nicht nach der Suche durch die interne Struktur der DLL.
Der Name des Einstiegspunkts lautet immer: `dllregierserver` .
Um herauszufinden, wo der "DLL Register Server -Einstiegspunkt" definiert ist *, müssen Sie:
1. Untersuchen Sie die Exporttabelle der DLL: Tools wie Dependenty Walker (abhängig) oder ähnliche DLL -Zuschauer können Ihnen eine Liste von Funktionen zeigen, die von einer DLL exportiert werden. Suchen Sie in dieser Liste nach "dllregiererver". Wenn es vorhanden ist, zeigt Ihnen das Tool möglicherweise sogar seine Speicheradresse innerhalb der DLL. Wenn Sie jedoch den Namen einfach finden, gibt Ihnen der Quellcodesposition nicht.
2. Untersuchen Sie den Quellcode des DLL (wenn Sie ihn haben): Wenn Sie den Quellcode für die DLL haben, finden Sie die Funktion `dllregiererver` direkt in den Quelldateien. Es wird eine Funktion sein, die als:
`` `C ++
STDAPI DllREGIERSERVERVER (void);
`` `
(oder eine ähnliche Erklärung abhängig von der verwendeten Sprache). Der Compiler wird dann seinen Export in die Exporttabelle der DLL verarbeiten.
Wichtiger Hinweis: Die Funktion "dllREGIERSERVER" ist * nur * in DLLs vorhanden, die für das System registriert sind. Viele DLLs benötigen keine Registrierung und enthalten daher diese Funktion nicht. Der Versuch, eine DLL zu registrieren, die diese Funktion nicht hat, führt zu einem Fehler.