Узнать параметры функций в DLL

Тема в разделе "WASM.BEGINNERS", создана пользователем Moral_Freak, 5 авг 2008.

  1. Moral_Freak

    Moral_Freak New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2008
    Сообщения:
    9
    Каким образом можно узнать все параметры функций в DLL. Список всех функций найти легко, а вот их параметры... посоветовали анализировать сам код библиотеки.
    Работаю на ASM в Delphi.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Не позже, чем неделю назад, тут такой вопрос поднимался. И все посоветовали анализировать сам код библиотеки. Что еще ты тут хочешь услышать?
     
  3. Moral_Freak

    Moral_Freak New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2008
    Сообщения:
    9
    Ну вопервых: ссылку на "тут такой вопрос поднимался" :) (искать тяжеловато)
    А вовторых: если там кроме совета "анализировать сам код библиотеки" ничего нету - то хотелось бы знать что именно анализировать и как? :)
     
  4. Vilco

    Vilco Vitaly

    Публикаций:
    0
    Регистрация:
    5 мар 2007
    Сообщения:
    190
    Адрес:
    Nsk, Russia
    О_о
    Дизассемблером воспользуйся.
     
  5. Moral_Freak

    Moral_Freak New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2008
    Сообщения:
    9
    Vilco:Мне надо этот процесс автоматизировать, т.е. я пишу прожку для автоматического определения всех функций и их параметров в DLL
    to MSoft: "тут такой вопрос поднимался" - не могу найти, какой хоть раздел?
     
  6. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Докопавшись до выхода из функции и узрев ret N, можно определить количество ее параметров. А вот узнать что это за параметры... тип, назначение, правила использования, возвращаемое значение... это геморой, собственно. Поэтому по стандартным длл есть MSDN. Для некоторых распространенных есть описание от разработчиков или .h - файлы, где можно получить необходимый минимум информации о функциях и параметрах(unrar, интеловские библиотеки для работы с jpeg, плавающей точкой, и тому подобные). Для всего прочего - есть универсальный способ. Забыть про неизвестно откуда полученную библиотеку, и использовать что-то другое :)
    Копание в функциях недокументированной длл имеет смысл в единственном, пожалуй, случае - ты новый программист, а старый уволился, не оставив никаких пояснений, как использовать то, что он наваял. А на эту длл завязана главная СУБД компании, документооборот-бухгалтерия-кадры, и работали уже несколько лет, а сейчас потребовалось дописать что-то новое или исправить какую-нибудь штуку из-за изменившегося законодательства. Но и тут можно найти способы узнать, что за параметры должны идти в функции, без дизассемблера. Например, связавшись с предыдущим программистом ;)

    ЗЫ: естественно, есть еще случай недокументированных функций windows, но я бы сначала поискал в сети, может функции все-таки кем-то уже изучены? И есть пусть неофициальная, но вполне пригодная мануалина?

    В общем случае автоматизированный анализ невозможен. Только по одной функции за раз, медленно и верно. Руками и головой.
     
  7. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Даже микрософтовские поделки из VS, показывающие стандартные функции и их параметры, работают с некоторой базой данных (как минимум с большим текстовым файлом), а не "определяют параметры" произвольной длл. Это ИИ надо написать, а не "прожку", для такого результата. Максимум, что ты можешь сделать автоматизированно - это для некоторых случаев верно определить количество двойных слов, являющихся параметром функции. Тип параметров будет загадкой - dword, qword... Не говоря уже о том, что это такое - указатель (на что-то), хендл (чего-то), спец-константа, некоторое число?
     
  8. Vilco

    Vilco Vitaly

    Публикаций:
    0
    Регистрация:
    5 мар 2007
    Сообщения:
    190
    Адрес:
    Nsk, Russia
    Задача (автоматизации) очевидно не имеет решения в общем случае (для произвольной библиотеки)
    Нужен ИИ, иначе как определять смысл параметра?
     
  9. Moral_Freak

    Moral_Freak New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2008
    Сообщения:
    9
    Мдаааа... хотел быстренько наклепать програмку :)
    Буду сам делать DLL'ки и искать закономерности в WinHex'е :))