Здравствуйте уважаемые программисты. Пожалуйста, помогите решить задачу. Нужно в моей программе подменить адрес функции причём из длл, во время её(длл) загрузки.
// mydll.cpp
int WSAAPI MyWSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData)
{
MessageBox(0,"yo","ПЕРЕХВАТИЛЛЛ!!" , 0);
int Ret = WSAStartup(wVersionRequested,lpWSAData);
return Ret;
}
BOOL APIENTRY DllMain(HINSTANCE hinstDll, DWORD dwReason,LPVOID lpReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
/*
Тут надо сделать чтобы вместо _WSAStartup вызывался
MyWSAStartup из dll.
*/
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
// myexe.cpp
int main(int argc, char* argv[])
{
HINSTANCE uDll = LoadLibrary((LPCTSTR) "wsock32.dll");
int (WSAAPI * _WSAStartup)(WORD,LPWSADATA);
int (WSAAPI * _WSACleanup)();
*(FARPROC *)&_WSAStartup = GetProcAddress(uDll, "WSAStartup");
*(FARPROC *)&_WSACleanup = GetProcAddress(uDll, "WSACleanup");
HINSTANCE uDll = LoadLibrary((LPCTSTR) "mydll.dll");
//При загрузке mydll.dll должна подменить _WSAStartup
if (_WSAStartup(0x0101, &wsaData))
{
printf ("winsock not bi initialized !\n");
_WSACleanup();
}
else printf("Winsock initial OK !!!!\n");
if (_WSACleanup())
printf("Error Cleapir\n");
else
printf("Cleapir Good !!!!!\n");
return 0;
}
22.06.04 19:49: Перенесено модератором из 'C/C++'. Lorenzo_LAMAS (7) в WIN API ioni (5) в WIN API — Павел Кузнецов