Вы находитесь на территории реинжиниринга здесь.
Я думаю, что на вашем месте я бы просто просмотрел представление CPU отладчика после вызова интересующего метода и нашел бы адрес точки входа. Я бы вычел это из базового адреса DLL, и это было бы смещением. Затем, чтобы вычислить адрес во время выполнения, вы просто добавляете смещение к базовому адресу библиотеки DLL в памяти в то время. Вы можете узнать базовый адрес с помощью вызовов LoadLibrary или GetModuleHandle.
Почему жесткий код смещения? Ну, так как вы не можете изменить свою DLL, она не выглядит слишком ограниченной. Если жесткое кодирование смещения не является жизнеспособным, то есть другие способы определения местоположения точек входа, но я должен признать, что я не самый большой в мире эксперт в этом.
Наконец, когда вы реализуете метод замены, вам нужно будет заменить его глобальной функцией / процедурой с дополнительным параметром, первым параметром, который заменяет Self.