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

Вниз

Функции из dll   Найти похожие ветки 

 
Rext   (2004-04-28 09:56) [0]

Господа!
  Есть сторонняя dll-ка. Как узнать имена функций и параметры, передаваемые этим функциям?
 
  Заранее спасибо.


 
evvcom ©   (2004-04-28 10:06) [1]

Этот вопрос уже не раз обсуждался.
Имена и количество параметров просто. Для определения типов параметров и их смысла надо сильно потрудиться дизассемблером. Хотя возможно проще найти документацию.


 
PVOzerski ©   (2004-04-28 10:30) [2]

>Имена и количество параметров просто. Для определения типов параметров и их смысла
В общем случае, для количества параметров тоже дизассемблировать придется, просто только с именами и индексами. Это если пользоваться готовыми утилитами. А если из своей проги, надо разбирать структуру файла dll.


 
evvcom ©   (2004-04-28 10:42) [3]


> В общем случае, для количества параметров тоже дизассемблировать
> придется, просто только с именами и индексами. Это если
> пользоваться готовыми утилитами.

В данном случае дизассемблер тоже можно считать утилитой. Да, дизассемблировать. Но времени это займет от нескольких секунд до нескольких минут - это я считаю просто. А типы ни один дизассемблер не распишет полностью. Если, конечно, внутри функции идет вызов общеизвестных функций API или других библиотек (MFC, например) с переданными в функцию параметрами, то IDA Pro их с легкостью определит. А если же в функцию передаются указатели на какие-то пользовательские структуры данных, то здесь придется сильно и долго попотеть.


 
Rext   (2004-04-28 11:01) [4]

Имя функции я нашел с помощью TDUMP, входящего в состав Delphi. Теперь бы разобраться с переменными...
To PVOzerski : какими утилитами лучше пользоваться?
To evvcom : можешь поподробнее объяснить, как искать параметры?


 
evvcom ©   (2004-04-28 11:05) [5]


> To evvcom : можешь поподробнее объяснить, как искать параметры?

Я уже дал намек, что пользоваться нужно дизассемблером, я использую IDA Pro, он считается лучшим. Дистрибутив ~30 МБ


 
PVOzerski ©   (2004-04-28 11:37) [6]

>какими утилитами лучше пользоваться?
IMHO, tdump вполне подходит. Сам пользуюсь, по старой памяти, fpimpdef"ом: всё-таки сам писал, хотя и по чужим мотивам :^) (исходники можно найти в дистрибутиве FreePascal). Опять же, лишней информации не дает, ровно то, что надо. Ладно, не буду саморекламой заниматься, а то в ответ багрепортами завалят...
>Теперь бы разобраться с переменными...
Это речь о параметрах или dll экспортирует еще и переменные?


 
Rext   (2004-04-28 11:39) [7]

Описка вышла ;). Именно о параметрах, с коими вызывается функция, идет речь.


 
Digitman ©   (2004-04-28 12:20) [8]


> Rext   (28.04.04 11:39) [7]


степень возможности определения типов и размеров параметров достаточно высока

степень же возможности определения ЛОГИЧЕСКОГО назначения того или иного параметра колеблется от практически нулевой до некоторой - все зависит от сложности дизассемблируемого алгоритма

ну, предположим, определил ты, что ф-ция ожидает параметрами два указателя .. на что конкретно они должны указывать в вызывающем коде - на строку ли, на структуру ли, на другой ли указатель - это вопрос детального изучения алгоритма вызываемой ф-ции, и это вполне может оказаться "крепким орешком", так и не разгаданном до тонкостей ...



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

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

Наверх





Память: 0.47 MB
Время: 3.367 c
8-1077474036
Push
2004-02-22 21:20
2004.05.16
Звук с модема


9-1072382293
lucky
2003-12-25 22:58
2004.05.16
Помогите плз сделать 3d врыв в DelphiX.


6-1080148640
Ильдар
2004-03-24 20:17
2004.05.16
Простейший сервер на TSocket.


7-1081237441
viperm
2004-04-06 11:44
2004.05.16
IDE current transfer mode


14-1083030908
Думкин
2004-04-27 05:55
2004.05.16
С днем рождения! 27 апреля.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский