aCaller := ReturnAddress;
Macht aber intern auch soein Assembler, aber das kann dir ja egal sein.
Nicht Offset aus der Map-Datei.
Die
DLL könnte ja beim Laden verschoben sein, vorallem da fast niemand die StartAdresse einstellt und alle Delphi-DLLs somit auf der selben Stelle liegen würden.
Über
VirtualQuery könntest du den Anfang des Speicherbereichs zur Adresse aCaller abfragen.