Да, иногда.
В Linux вы можете использовать dlopen()
, чтобы открыть общую библиотеку, содержащую нужную вам функцию, или даже получить доступ к текущему исполняемому файлу и найти свою функцию, используя dlsym()
В Windows вы обычно звоните LoadLibrary()
и GetProcAddress()
соответственно.
Если таблицы символов для рассматриваемых библиотек были удалены, или, в некоторых случаях, если методы являются статическими / закрытыми, вы не сможете получить к ним доступ, используя этот подход.
Кроме того, не забывайте, что если ваша библиотека написана на C ++, вам, возможно, придется бороться с искажением имен. Вам нужно понять метод искажения, применяемый компилятором, с которым вы сталкивались.