Возникла хитрая задачка с которой никогда не сталкивался. Допустим есть код:
int test()
{
HMODULE user32;
int (*msgbox)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
user32 = LoadLibrary("user32.dll");
msgbox = (int (__cdecl *)(struct HWND__ *,const char *,const char *,unsigned int )) GetProcAddress(user32, "MessageBoxA");
msgbox(0, "MSG", "Header", 0);
FreeLibrary(user32);
return 0;
}
Как и каким компилятором можно откомпилировать эту функцию в исполняемый код. То есть нужно получить набор байт который скопировав в память и сделав jmp/call по этому адресу будет выполнен данный код. Чем такое можно сделать?
P.S. Адреса импорта LoadLibrary/GetProcAddress/FreeLibrary не известны заранее.