Необходимо получив адрес функции через вызов GetProcAddress сразу передать управление на нее, при этом нельзя порушить стек, для примера: void MyProc(void) { DWORD a = GetProcAddress(hModule, "ExportFunc"); //и тут надо сделать что-то типа jmp a } Если кто может помочь, подскажите. Заранее спасибо
не пробовал, но что, если взять и вписать функцию как экстэрн инлайн и прилинковать ассемблерный модуль в формате .obj с mov eax,a jmp eax?...
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
Код (Text): void MyProc(void) { void *func = GetProcAddress(hModule, "ExportFunc"); void **pret = (void**)_AddressOfReturnAddress(); *pret = func; }
typedef void (__cdecl *MYPROC)(LPWSTR); char GetUsNamExA[] = "GetUserNameExA"; __declspec(dllexport) void __stdcall GetUserNameExA(void) { (MYPROC)GetProcAddress(secur32, GetUsNamExA); } компилятор сам скомпилил без прологов и эпилогов как мне и надо было: GetUserNameExA proc near mov rcx, cs:qword_180014F00 lea rdx, aGetusernameexa ; "GetUserNameExA" jmp cs:GetProcAddress GetUserNameExA endp всем спасибо и спасибо MSDN