· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Вызов процедуры из другого exe по ее адресу

Посл.отвђт Сообщенiе


Дата: Июн 28, 2003 09:21:21

Есть ДЛЛ на ASM. Когда программа вызывает функцию из ДЛЛ, то в качестве одного из параметров передает ДЛЛ'ке адрес на одну свою процедуру. Надо сделать так, чтобы ДЛЛ вызвала эту функцию из exe. Подразумевается, что ДЛЛ знает формат функции и передаст требуемые параметры.
По аналогии: так работает API-функция EnumWindows - ей передаешь адрес на свою процедуру, и она вызывает эту процедуру некоторое количество раз.


Дата: Июн 28, 2003 11:10:59

Очень просто: адрес в регистр или память и call. Например так:

CallExe proc pfnFuncInExe:LPVOID


mov ecx, pfnFuncInExe
push paramX
. . .
push param1
call ecx

ret

CallExe endp


Если нужно чтоб в исходнике красиво было, то под masm так (в случае, если вызываемая функция принимает один параметр)

proto01 TYPEDEF proto :DWORD

pproto01 TYPEDEF PTR proto01

CallExe proc pfnFuncInExe:LPVOID

mov ecx, pfnFuncInExe
invoke pproto01 ptr ecx, param

ret

CallExe endp


Дата: Июн 30, 2003 22:39:57

Big thanx! Буду ковыряться.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064