#include <windows.h>
#include <stdio.h>
HINSTANCE oldws = 0;
FARPROC p[117] = {0};
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LP lpReserved
)
{
if(ul_reason_for_call == DLL_PROCESS_DETACH)
{
FreeLibrary(oldws);
}
else if(ul_reason_for_call == DLL_PROCESS_ATTACH)
{
oldws = LoadLibraryA("ws2_32old.dll");
if (!oldws) return false;
p[0] = GetProcAddress(oldws,"FreeAddrInfoW");
p[1] = GetProcAddress(oldws,"GetAddrInfoW");
p[2] = GetProcAddress(oldws,"GetNameInfoW");
...............................................................
}
return TRUE;
}
// FreeAddrInfoW
extern "C" __declspec(naked) void __stdcall __E__0__()
{
__asm
{
jmp p[0*4];
}
}
// GetAddrInfoW
extern "C" __declspec(naked) void __stdcall __E__1__()
{
__asm
{
jmp p[1*4];
}
}
// GetNameInfoW
extern "C" __declspec(naked) void __stdcall __E__2__()
{
__asm
{
jmp p[2*4];
}
}
................................................................................
Враппер для DLL
main.cpp
Код:
exports.def
Код:
LIBRARY "test"
EXPORTS
FreeAddrInfoW=__E__0__ @27
GetAddrInfoW=__E__1__ @24
GetNameInfoW=__E__2__ @25
.................................................
EXPORTS
FreeAddrInfoW=__E__0__ @27
GetAddrInfoW=__E__1__ @24
GetNameInfoW=__E__2__ @25
.................................................
при замене стандартной ws2_32 на мою и запуске программ использующих ее вылетает ошибка. хотя dll вроде экспортирует все нужные функции.
Совет: возьми найди любой автоматизированный врапперделатель и не порти себе жизнь
подскажи пожалусто где можно найти этот врапероделатель:rolleyes:
на wasm.ru например
спасибо помогло
зы: тему можно закрыть