Получить имя модуля с функцией + смещение - PullRequest
2 голосов
/ 11 марта 2012

Я пытаюсь выяснить, как получить функцию модуля + смещение потока.Похоже на то, как Process Explorer выполняет отображение потока.Пример ....

ntdll! TplsTimerSet + 0x07c0

Я могу без проблем получить начальный адрес, а также могу разрешить начальный адрес модуля.Я могу получить начальный адрес, чтобы показать «ntdll.dll» плюс смещение (startaddress - baseaddress), но не функцию.Итак, мой выглядит следующим образом ..

ntdll + 3BC0C

Я хотел бы определить, в какой функции DLL-библиотеки ntdll находится смещение. В этом случае это Tplstimerset.Я знаю, что мне придется рассчитать разницу смещения и адрес функции, но это должно быть легко.Этот код может быть на C ++ Delphi / Pascal.Спасибо заранее.

1 Ответ

0 голосов
/ 12 апреля 2019

В Process Explorer -> Параметры -> Настроить символы вы можете видеть, что файлы символов используются для разрешения функций.

Эти символы от Microsoft , и windbg, и Visual Studio используют их при отладке.

enter image description here

Если вы запустили windbg и загрузили один исполняемый файл, введите «x ntdll! *», Чтобы отобразить все именованные функции ntdll, звездочка означает, что он соответствует всем.

enter image description here

Полагаю, вам нужно программно получать адреса именованных функций, вам может понадобиться спецификация файла .pdb .

...