![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ProcAddress [D7, WinXP]
ASSERT © (2007-07-14 14:47:00)вот GetProcAddress из библиотеки берет адрес процедуры, например
t:procedure .........
@t:=GetProcAddress(...)
а как мне можно задать адрес этой проц-ры, числом напримет так:
@t:=3434456656;
пожалййста помогите.
Инс (2007-07-16 11:18:00) [1]
> Игорь Шевченко © (16.07.07 11:05) [5]
Так ведь Однокамушкин [2] уже ответил! :)
Игорь Шевченко (2007-07-16 11:05:00) [2]
> а как мне можно задать адрес этой проц-ры, числом напримет
> так:
> @t:=3434456656;
@t:=Pointer(3434456656);
Инс (2007-07-15 00:18:00) [3]Да, еще. А если на другой машине стоит другая версия этой библиотеки, то вообще ничего работать не будет.
Инс (2007-07-15 00:15:00) [4]
> [2] Однокамушкин (14.07.07 21:51)
Зря. Нужно было действительно дождаться ответа. Насколько я понял, автор таким трюком хочет выполнить какую-то неэкспортируемую функцию, смещение от начала файла которой он где-то подглядел. А для этого нужно не забывать, что когда модуль будет загружен в адресное пространство процесса, к нему (смещению) нужно будет еще добавить значение, по которому загружена сама библиотека. А это значение возвращает GetModuleHandle. Если же автор подглядел адрес функции уже загруженной DLL, то полагаться на него нельзя, ибо в другой раз в общем случае библиотека может быть загружена по другому адресу.
Хотя возможно автору нужно совсем другое...
Однокамушкин (2007-07-14 21:51:00) [5]
@t:=Pointer(3434456656);
> Инс © (14.07.07 14:49) [1]
> А зачем?
+1
Инс (2007-07-14 14:49:00) [6]А зачем?