Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#16

Re: DLL-EntryPoint mit Funktion tauschen?

  Alt 4. Jul 2009, 14:49
Nja, ich wollte mir ein Programm schreiben, welches nach dem Kompilieren die DLL automatisch patcht.

Und vor DLL-Main bringt mir nicht viel, da ich ja nach EXE-Main benötige (praktisch so als würde die DLL dynamisch und nicht statisch geladen )


Sooo, hab grad mal einige TestProjekte erstellt.

EXE und DLL funktionieren erstmal normal:
beim Start der EXE kommt "EntryPoint is called"
und beim Aufruf der Prozedur "InitDLL is called",
also soweit alles OK.

Das Patchen geht (anscheinend) auch.

Nur dann der Test mit der geänderten DLL:
beim Start der Exe kommt (wie erhofft) "InitDLL is called",
wonach der Tausch also funktioniert hat

blos zufrüh gefreut, denn beim Aufruf der Prozedur (welche den alten EntryPoint darstellt), knallt es

Delphi-Quellcode:
---------------------------
Benachrichtigung über Debugger-Problem
---------------------------
Im Projekt I:\Software+Hilfe\_Komponnten\himXML\DLLs\Test.exe sind zu viele auseinanderfolgende Exceptions aufgetreten: ''Zugriffsverletzung bei 0x00343700: Lesen von Adresse 0x01371e34''. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Konnte jetzt keine Infos finden, ob die Aufrufkonvention stimmt (aber das war doch ohne Parameter egal), also wird der EntryPoint wohl irgendwelche Parameter haben wollen?




[add]
ich glaub ich hab da was

http://msdn.microsoft.com/en-us/library/ms682583.aspx

mal sehn was passiert, wenn ich diese Werte zwischenspeicher und dem alten EntryPoint übergebe ...

[edit]
Anhang gelöscht (geht eh nicht)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat