У меня вопрос по прехвату api функций, использовал эту статью
http://www.xakep.ru/post/22263/default.asp
Вызываю замену апи функции на свою(в инжектируемой библиотеке)
InterceptDllCall(hInstance, 'user32.dll', 'MessageBoxA',Pointer(@MyMessageBox), nil, Pointer(myProc));
Вот описание, что бы было понятней
Код:
function InterceptDLLCall(hLocalModule: HModule; c_szDllName, c_szApiName:PChar;
pApiNew, pApiToChange: Pointer; var p_pApiOrg: Pointer): boolean;
hLocalModule: HModule; – модуль в котором находиться Import Table
c_szDllName:PChar; – имя DLL, в которой находиться перехватываемая функция
c_szApiName:PChar; – имя перехватываемой функции
pApiNew: Pointer; – указатель на нашу функцию, которая будет вызываться вместо перехватываемой.
pApiToChange: Pointer; – указатель на перехватываемую функцию, если равно nil, то адрес функции определяется через c_szDllName и c_szApiName.
p_pApiOrg: Pointer; – указатель на старую перехватываемую функцию
но проблема вот в чём, замена функции работает только в инжектируемой библиотеке, а не в самом приложении куда я её инжектирую.
Даю гарантию это из за hLocalModule так как hInstance - дескриптор текущего экземпляра приложения, которым является инжектируемая библиотека а не само приложение.
Так как же мне узнать HModule этого приложения?
Последний раз редактировалось ZET36; 25.11.2009 в 15:53..