Подпись API от запущенного процесса - PullRequest
0 голосов
/ 17 февраля 2011

Я могу читать библиотеки DLL, участвующие в работающем процессе, через модули enumprocessmodules, и я могу достичь процесса IAT.Процесс IAT содержит адреса API, а не имя.

Есть ли способ получить имя и подпись API.

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Если у вас есть список всех библиотек DLL, вы можете просмотреть таблицу адресов экспорта каждой из них, чтобы найти адреса всех экспортируемых функций (и порядковые номера и, возможно, имена, если в библиотеке DLL была эта информация). Оттуда вы можете сгенерировать отображение адреса функции обратно в DLL и информацию об экспортированной функции. Вероятно, вы столкнетесь с некоторыми трудностями, связанными с перенаправленными экспортированными функциями, но это должно быть относительно просто.

1 голос
/ 17 февраля 2011

Нет, IAT должен содержать либо имя API, либо порядковый номер функции - в противном случае загрузчик не может сопоставить импортированную функцию с экспортом из загруженной вами DLL.Если у вас есть имя, это будет смещение узкой строки в вашем собственном образе процесса;если это порядковый номер, то вы можете найти имя функции по порядковому номеру в таблице экспорта импортированной библиотеки DLL, но это не всегда указывается.получить подпись здесь.Возможно, вы сможете запросить каталог ресурсов отладки для PDB, а затем использовать API-интерфейсы PDB для считывания подписи из этого, если есть доступная PDB.

...