Каким образом можно узнать все параметры функций в DLL. Список всех функций найти легко, а вот их параметры... посоветовали анализировать сам код библиотеки. Работаю на ASM в Delphi.
Не позже, чем неделю назад, тут такой вопрос поднимался. И все посоветовали анализировать сам код библиотеки. Что еще ты тут хочешь услышать?
Ну вопервых: ссылку на "тут такой вопрос поднимался" (искать тяжеловато) А вовторых: если там кроме совета "анализировать сам код библиотеки" ничего нету - то хотелось бы знать что именно анализировать и как?
Vilco:Мне надо этот процесс автоматизировать, т.е. я пишу прожку для автоматического определения всех функций и их параметров в DLL to MSoft: "тут такой вопрос поднимался" - не могу найти, какой хоть раздел?
Докопавшись до выхода из функции и узрев ret N, можно определить количество ее параметров. А вот узнать что это за параметры... тип, назначение, правила использования, возвращаемое значение... это геморой, собственно. Поэтому по стандартным длл есть MSDN. Для некоторых распространенных есть описание от разработчиков или .h - файлы, где можно получить необходимый минимум информации о функциях и параметрах(unrar, интеловские библиотеки для работы с jpeg, плавающей точкой, и тому подобные). Для всего прочего - есть универсальный способ. Забыть про неизвестно откуда полученную библиотеку, и использовать что-то другое Копание в функциях недокументированной длл имеет смысл в единственном, пожалуй, случае - ты новый программист, а старый уволился, не оставив никаких пояснений, как использовать то, что он наваял. А на эту длл завязана главная СУБД компании, документооборот-бухгалтерия-кадры, и работали уже несколько лет, а сейчас потребовалось дописать что-то новое или исправить какую-нибудь штуку из-за изменившегося законодательства. Но и тут можно найти способы узнать, что за параметры должны идти в функции, без дизассемблера. Например, связавшись с предыдущим программистом ЗЫ: естественно, есть еще случай недокументированных функций windows, но я бы сначала поискал в сети, может функции все-таки кем-то уже изучены? И есть пусть неофициальная, но вполне пригодная мануалина? В общем случае автоматизированный анализ невозможен. Только по одной функции за раз, медленно и верно. Руками и головой.
Даже микрософтовские поделки из VS, показывающие стандартные функции и их параметры, работают с некоторой базой данных (как минимум с большим текстовым файлом), а не "определяют параметры" произвольной длл. Это ИИ надо написать, а не "прожку", для такого результата. Максимум, что ты можешь сделать автоматизированно - это для некоторых случаев верно определить количество двойных слов, являющихся параметром функции. Тип параметров будет загадкой - dword, qword... Не говоря уже о том, что это такое - указатель (на что-то), хендл (чего-то), спец-константа, некоторое число?
Задача (автоматизации) очевидно не имеет решения в общем случае (для произвольной библиотеки) Нужен ИИ, иначе как определять смысл параметра?
Мдаааа... хотел быстренько наклепать програмку Буду сам делать DLL'ки и искать закономерности в WinHex'е )