Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать параметры процедуры из DLL?


777 ©   (2002-02-21 13:46:00) 

Как узнать параметры процедуры из DLL , если известно только имя процедуры?


SV   (2002-02-23 15:44:00) [1]

1) утилита tDump
2) зависин от того, на чем сделана DLL
Посмотри как преобразуются имена DLL в MS C++ и Borland"e.
Они при создании DLL к пользоват. названиям добавляют всю информацию о типах ф-ции, принадлежности классу, итд.
Всё это есть в Help"e


VuDZ   (2002-02-23 11:33:00) [2]

а ты спрашивай, спрашивай - не поможем, так посмеёмся :)


777   (2002-02-22 18:46:00) [3]

Всё ясно, обреченный вопрос...


tigerfly   (2002-02-22 16:39:00) [4]

Этого сделать нельзя, потому что процедура/функция может принимать разноеколичество параметров, определяя истинное их количество по обязательным. Точно также, как это делает printf в С++.


VuDZ   (2002-02-22 16:32:00) [5]

так оно и есть. для это есть "наука" reverse engenering :>


Виктор Щербаков   (2002-02-22 13:55:00) [6]

Узнать количество параметров и соглашение о вызове не так сложно.
А вот как быть с их смыслом?
Допустим, установили, что у функции один целый параметр. Но каков его смысл? Может это хэндл или указатель на невероятной сложности структуру или сумма каких-либо флагов и т.д.
Тут и с дизассемблером с ума сойдешь. То же самое касается возвращаемого значения.


Алексей Петров   (2002-02-22 12:50:00) [7]

Можно спросить у автора DLL :)


Королев   (2002-02-22 11:00:00) [8]

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


VuDZ   (2002-02-21 20:39:00) [9]

да ладно, я просто прикалывался после тяжёлого дня, который завершиться ещё не скоро...


Иван Шихалев   (2002-02-21 19:22:00) [10]

Гм... Далеко не всегда имена выглядят как _GetStdHandle@4. Тогда уж можно вспомнить имена из BPL, где и типы перечислены.


VuDZ   (2002-02-21 19:08:00) [11]

_GetStdHandle@4
принимает переменную, 4х байтовую переменную. Она либо DWORd либо HANDLE, но, что она возвращат, не известно. С помощью какой-то матери и SoftICE"a можно узнать, что же ей надо, или всавив это в свой код или поискав в чужом.

Ну, как индукция?


Иван Шихалев   (2002-02-21 18:11:00) [12]

to VuDZ

А как? Вот дисассемблируя - действительно косвенным образом. А не дизассемблируя - это как вообще?


VuDZ   (2002-02-21 17:44:00) [13]

только косвенным образом если не дизассемблировать


Digitman   (2002-02-21 14:13:00) [14]

без прототипа (описания процедуры в некоем заголовочном файле) или без знания как минимум ассемблера - никак


Наверх

Титульная страница Поиск, карта сайта Написать письмо