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

Вниз

Определить параметры для экспортируемой функции   Найти похожие ветки 

 
DelphiLexx ©   (2004-10-21 18:15) [0]

С помощью программы Depends или ProcessInfo можно узнать какие функции экспортирует dll-файл. Как узнать какие нужны параметры и тип этих параметров для экспортируемой функции.
Т.е. есть example.dll и он предоставляет следующие ф-ции:
func1;
func2;
...
funcn;

Как узнать параметры и их тип, скажем, для


 
GuAV ©   (2004-10-21 18:37) [1]

1. Посмотреть в документации
2. Посмотреть в исходниках/header"ах
3. Спосить у разработчика
4. Угадать


 
clickmaker ©   (2004-10-21 18:43) [2]

5. Дизасемблировать и по логике кода попробовать понять


 
GuAV ©   (2004-10-21 18:53) [3]

6. Найти примеры использования и по их коду попробовать понять


 
XProger ©   (2004-10-21 19:07) [4]

7. Забить на всё это, и пасать свою длл :)


 
clickmaker ©   (2004-10-21 19:23) [5]

8. Забить на всё это, в т.ч. и на пункт 7 и идти пить пиво :)


 
Игорь Шевченко ©   (2004-10-21 21:53) [6]


> Как узнать какие нужны параметры и тип этих параметров для
> экспортируемой функции.


Никак


 
SammIk ©   (2004-10-22 07:01) [7]

2 [6] Не согласен, всегда будут передоватся в ф-ю значением типа DWORD.
А уж там, дело времени, определить что это конкретно, указатель или число.


 
Digitman ©   (2004-10-22 08:32) [8]


> SammIk ©   (22.10.04 07:01) [7]


> всегда будут передоватся в ф-ю значением типа DWORD


с чего ты взял, что именно DWORD ?
предположим, параметр передается через EAX, но это отнюдь не означает, что в теле вызванной ф-ции будет использовано полное 32-разрядное значение этого регистра - не исключено, что будет использовано только  значение AL


 
SammIk ©   (2004-10-22 08:37) [9]

Но вы же не будете сопротевлятся, что передаются дворды?))
А уж как процедура их воспринемает, это вторая строчка моего поста


 
Digitman ©   (2004-10-22 08:48) [10]


> SammIk ©   (22.10.04 08:37) [9]



> вы же не будете сопротевлятся, что передаются дворды?


еще как буду.
никто и ничто не обязывает разработчика библиотеки придерживаться каких-либо станд.соглашений о вызовах


 
SammIk ©   (2004-10-22 08:50) [11]

Хотя, да. Тут я отступлю, можно положить в стек и не дворд))


 
Digitman ©   (2004-10-22 09:09) [12]


> SammIk ©   (22.10.04 08:50) [11]
> можно положить в стек и не дворд


как раз со стеком-то и нельзя манипулировать иначе как модифицируя ESP на величину кратную DWORD

а вот такой пример как раз и иллюстрирует необязательность передачи параметра искл-но как DWORD

procedure myproc; export;
asm
 movsx ax, al
end;

var
x: integer;
..

asm
mov al, 255
call myproc
movsx [x], ax
end
showmessage(inttostr(x)); // -1


 
SammIk ©   (2004-10-22 09:17) [13]

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


 
BiN ©   (2004-10-22 09:23) [14]

как вариант для общего случая можно предложить Advanced Dll Wrapper v0.0001 by 90210 /HI-TECH на http://www.wasm.ru/toollist.php?list=11


 
Digitman ©   (2004-10-22 09:43) [15]


> Дык всеравно, регистор-то 32битный и передается дворд. как
> не крути


ну где ты видишь, что передается DWORD ? BYTE передается !

старшее слово и старший байт мл.слова регистра EAX даже не затрагивается при передаче/приеме параметра


 
SammIk ©   (2004-10-22 19:01) [16]

Вот ежелиб, в функцию передовалось 8 бит и нибитом больше нельзы было прочитать, то тогда я бы сказал ДА, а так это просто логика программы.
А передается в любом случае 32бита, не больше не меньше.
Разве что ммх регистры использовать.



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

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

Наверх




Память: 0.5 MB
Время: 0.041 c
14-1100704225
Pavel_levaP
2004-11-17 18:10
2004.12.05
разбилась матрица на ноутбуке


4-1098457264
parent
2004-10-22 19:01
2004.12.05
Найти процедуру по адресу без отладчика


1-1100808505
xkiller
2004-11-18 23:08
2004.12.05
Как программно свернуть popupmenu?


1-1101141727
Pirat1
2004-11-22 19:42
2004.12.05
Вопрос по поводу DLL


14-1100587964
Rouse_
2004-11-16 09:52
2004.12.05
С Днем Рождения 16 ноября