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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.033 c
1-1100968316
eugene32
2004-11-20 19:31
2004.12.05
kak pereimenovat file?


14-1100681837
gn
2004-11-17 11:57
2004.12.05
Майкрософт 105 дней не исправляет критические проблемы


14-1100766738
Dmitriy O.
2004-11-18 11:32
2004.12.05
Удаленное администрирование своих программ.


9-1091176852
Kurtevich
2004-07-30 12:40
2004.12.05
back to OpenGL...


1-1100853835
Ivolg
2004-11-19 11:43
2004.12.05
Данные





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