Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.20;
Скачать: CL | DM;

Вниз

Как узнать параметры процедуры из DLL?   Найти похожие ветки 

 
777   (2002-02-21 13:46) [0]

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


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

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


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

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


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

to VuDZ

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


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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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



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

Текущий архив: 2002.05.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
1-64570
sergeii
2002-05-07 11:38
2002.05.20
Поиск данных в StringGrid


1-64658
Maza
2002-05-07 23:12
2002.05.20
Закрытие формы!!!


1-64733
Belov
2002-05-06 17:15
2002.05.20
Сохранение картинки


3-64500
VAleksey
2002-04-22 15:26
2002.05.20
DbGrid.PickList и dbGrid.EditButtonClick


3-64467
SelfDestructor
2002-04-24 21:13
2002.05.20
RIGHT JOIN в ADO