Есть ли способ найти все функции, предоставляемые DLL - PullRequest
55 голосов
/ 13 января 2009

Я искал способ получить все строки, которые отображаются на имена функций в DLL.

Под этим я подразумеваю все строки, для которых вы можете вызвать GetProcAddress. Если вы делаете шестнадцатеричный дамп dll, символы (строки) есть, но я думаю, что для получения этих имен должен быть системный вызов.

Ответы [ 13 ]

1 голос
/ 07 апреля 2017

Вы также можете использовать средство linux «objdump» под Windows, но вам, возможно, придется сначала установить cygwin.

Я использую следующие команды:

# feed the output to less
objdump -x nameOfThe.Dll| less
# or use egrep to filter
objdump -x /cygdrive/c/Windows/system32/user32.dll | \ 
    egrep "^\s*\[[ [:digit:]]{4}\] \w{1,}" | less
0 голосов
/ 13 января 2009

Вам не нужен инструмент, и вам не нужно анализировать PE. Просто используйте стандартный Win32 API (D)

Код (на С) много раз публиковался на сайте Adv.Win32 api ng ( новости: //comp.os.ms-windows.programmer.win32) (с 1992 года ...)

0 голосов
/ 13 января 2009

Я полагаю, что в конечном итоге вы проанализируете PE-файл и разомкнетесь, если захотите найти имена функций неизвестного dll во время выполнения или крайне бесполезной системы ("dumpbin"); магия.

Тебе должно быть яснее, что ты хочешь.

BFD библиотека делает то, что вы хотите (и кухонная раковина), которая является основным компонентом нескольких инструментов GNU binutils. Я не уверен, подойдет ли это вашей проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...