Функции символизации без PDB - PullRequest
1 голос
/ 09 января 2011


Предположим, у меня есть функция с именем «Overflow» в DLL, которая называется «Overflow.dll», но у меня нет ее PDB.
Я знаю, что могу получить адрес, с которого начинается «GetProcAddress», но могу ли я каким-то образом получить адрес, где он заканчивается, или его размер?
(C ++ в Windows)

Причина, по которой я спрашиваю это, заключается в том, что у меня есть адрес, и я хочу знать, входит ли он в мою конкретную функцию. Поэтому я предполагаю (и, пожалуйста, исправьте меня, если я ошибаюсь), что адрес находится в моей функции, если:
StartAddress <= Мой адрес <= EndAddress </p>

спасибо:)

1 Ответ

0 голосов
/ 09 января 2011

Итак, я предполагаю (и, пожалуйста, поправьте меня, если я ошибаюсь)

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

Вы можете реализовать синтаксический анализатор для команд x86, который ищет возвратинструкция по поиску конечного адреса, при условии, что вы знаете, что в функции есть только один возврат.Если вы не знаете, что есть только один возврат, вам нужны PDB.

...