Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Список функцийй в DLL   Найти похожие ветки 

 
alsov ©   (2004-01-15 12:44) [0]

Доброго времени суток

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

Заранее спасибо.


 
AKul ©   (2004-01-15 12:50) [1]

Список экспортируемых функций можно получить всегда. Правда не все функции могут иметь имена (могут экспортироваться по ординалам) - это стандарт.
А вот с параметрами - напряженка.
Посмотреть можно инструментом для просмотра/редактирования структуры PE-файла.


 
alsov ©   (2004-01-15 12:59) [2]

Как именно можно получить список функций? Если не трудно - напиши код.

Каким инструментом для просмотра лучше воспользоваться?
Если есть кинь URL.


 
Вася Пупкин ©   (2004-01-15 14:47) [3]

...\Borland\Delphi6\Bin\Tdump.exe


 
AbrosimovA ©   (2004-01-15 15:49) [4]

А можно и поиском в интернете, к примеру, "Список экспортируемых функций user32.dll" , авось повезёт.


 
alsov ©   (2004-01-15 17:32) [5]

Мне нужно специализирований DLL ...


 
Jel ©   (2004-01-15 17:46) [6]

Разве что поискать в Сети сишные хедеры для этой dll. Иного достоверного пути узнать параметры экспортируемых функций ИМХО нет.


 
AKul ©   (2004-01-15 17:57) [7]

Можешь найти практически на любом хакерском, ассемблерном сайте.
URL я не помню.
По-моему было на wasm.ru, ищи в разделах инструкменты(редакторы ресурсов). Там же кажется есть доки по структуре PE-файла. Не найдешь - попробуй через поисковик.

Кстати, на скорую руку экспортируемые функции можно посмотреть и любым viewer"ом в текстовом режиме - они обычно располагаются за байтами=названию DLL (К примеру открываешь в Windows commander"е по F3 файл Kernel32.dll, нажимаешь поиск и вводишь KERNEL32.DLL
За найденным текстом и обычно и идут названия экспортируемых функций)


 
YuRock ©   (2004-01-15 18:12) [8]

Так Вы программно получить хотите?


 
Songoku ©   (2004-01-16 00:50) [9]

2 alsov: Список функций получить можно! А вот их параметры не льзя, хотя IDA это как то делает!
Кароче изучай PE структуру!


 
AKul ©   (2004-01-16 09:24) [10]

to Songoku ©   (16.01.04 00:50) [9]:

> хотя IDA это как то делает!


IDA их не откуда не берет! (Точнее не из DLL)
Описание большиства стандартных API-функций, а также функций библиотек компиляторов у нее есть.

А параметры "неизвестных" функций она получает анализируя их код (например, размер фрейма стека, по каким смещениям относительно EBP или ESP идет обращение, из передаваемых параметров в "известные" функции и т.д.). Но полученное таким образом "описание" функции не всегда бывает полным.


 
BiN ©   (2004-01-16 12:20) [11]

1) SymLoadModule
  SymEnumerateSymbols

2) AKul ©   (16.01.04 09:24) [10]


 
alsov ©   (2004-01-16 17:31) [12]

>1) SymLoadModule
>  SymEnumerateSymbols
>
>2) AKul ©   (16.01.04 09:24) [10]

Что это значит?


 
Songoku ©   (2004-02-29 15:36) [13]

AKul © -> Я говарил про не докуминтированые функцие ... там можно по использованию якеек стэка ращитать голичество параметров!


 
BiN ©   (2004-03-01 09:16) [14]

alsov ©   (16.01.04 17:31) [12]
1) список экспортируемых функций можно узнать с помощью вышеуказанных Sym-функций
2) число параметров - см. сообщение Akul-a [10]. На Wasm.ru есть утилитка специально для этой цели - правда, кажется, без исходников.


 
idiliya   (2004-03-02 13:58) [15]

http://forum.ixbt.com/0040/000222.html#19

http://www.delphifaq.com/fq/q2133.shtml


 
Игорь Шевченко ©   (2004-03-02 14:21) [16]

idiliya   (02.03.04 13:58)

С отладочной информацией, пардон, и TDump все прекрасно показывает...


 
idiliya   (2004-03-02 14:36) [17]

Игорь Шевченко

тут код есть (а не утилиты)


 
Игорь Шевченко ©   (2004-03-02 15:31) [18]

idiliya   (02.03.04 14:36)

Для этого надо иметь отладочную информацию, что в наше время большая редкость.


 
idiliya   (2004-03-02 16:09) [19]

Игорь Шевченко

хм, сейчас проверили, пример работает для тестовой DLL скомпилированной в D5 и в BC45 с опцией не включать debug info в linker?
работает так же и с kernel32.dll (xp) и с остальными в system32

ps: пример не работает в XP: ExportedNamesSize = 0, ExportedNames = nil. в 98 все нормально


 
Игорь Шевченко ©   (2004-03-02 16:18) [20]

idiliya   (02.03.04 16:09)

Минуточку, я не совсем понял, код показывает параметры функций или только имена ?


 
idiliya   (2004-03-02 16:21) [21]

Игорь Шевченко

естественно только имена


 
BiN ©   (2004-03-02 16:33) [22]

в мсдн функция MapDebugInformation, с помощью кот. реализована задача на указанных ресурсах, представляется как устаревшая

реализация с помощью sym-функций есть на
http://delphibase.endimus.ru/?action=viewfunc&topic=filedll&id=10062

Правда имхо следует исправить LoadLibrary на LoadLibraryEx с флагом LOAD_LIBRARY_AS_DATAFILE.


 
Игорь Шевченко ©   (2004-03-02 16:34) [23]

idiliya   (02.03.04 16:21)

А...для имен код известный, но я не понимаю, каким образом имена экспортируемых функций добываются через ImageDebugInformation...


 
Игорь Шевченко ©   (2004-03-02 16:38) [24]

Пардон, все понял.
Это не та отладочная информация, кторую я имел в виду в [16] и [18]. В той информации и параметры показываются.



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.035 c
1-1081702840
Максим
2004-04-11 21:00
2004.04.25
Снова про прозрачную кнопку.


9-1068125760
delpher_gray
2003-11-06 16:36
2004.04.25
Положение курсора на изометрической карте


1-1081256294
-SeM-
2004-04-06 16:58
2004.04.25
Дамп процедуры/функции


1-1081151863
infom
2004-04-05 11:57
2004.04.25
Вывод листинга программы в Word


4-1077407594
Sulimxar
2004-02-22 02:53
2004.04.25
Вывести текст на канву инверсным цветом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский