Это пиздец полный нахуй error C2760: синтаксическая ошибка: ожидался токен "объявление", а не "=" template <typename... Args> void* syscall(LPCWSTR module, LPCWSTR name, Args... pee) { BYTE yyas[] = { 0x4C, 0x8B, 0xD1, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3 } static BYTE* poop = (BYTE*)VirtualAlloc(NULL, sizeof(yyas), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); memcpy(poop, yyas, sizeof(yyas)); char* app; wcstombs(app, name, wcslen(name)); *(DWORD*)(poop + 4) = *(DWORD*)((DWORD*)GetProcAddress(GetModuleHandleW(module), app) + 4); auto fn = reinterpret_cast<void*(*)(Args...)>(&poop); return fn(Args...); } Код template <typename... Args> void* syscall(LPCWSTR module, LPCWSTR name, Args... pee) { BYTE yyas[] = { 0x4C, 0x8B, 0xD1, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3 } static BYTE* poop = (BYTE*)VirtualAlloc(NULL, sizeof(yyas), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); memcpy(poop, yyas, sizeof(yyas)); char* app; wcstombs(app, name, wcslen(name)); *(DWORD*)(poop + 4) = *(DWORD*)((DWORD*)GetProcAddress(GetModuleHandleW(module), app) + 4); auto fn = reinterpret_cast<void*(*)(Args...)>(&poop); return fn(Args...); }
void* syscall(LPCWSTR module, LPCWSTR name, Args... pee) { BYTE yyas{} = { 0x4C, 0x8B, 0xD1, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3 }; static BYTE* poop = (BYTE*)VirtualAlloc(NULL, sizeof(yyas), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); memcpy(poop, yyas, sizeof(yyas)); char* app; wcstombs(app, name, wcslen(name)); *(DWORD*)(poop + 4) = *(DWORD*)((DWORD*)GetProcAddress(GetModuleHandleW(module), app) + 4); auto fn = reinterpret_cast<void*(*)(Args...)>(&poop); return fn(Args...); } Код void* syscall(LPCWSTR module, LPCWSTR name, Args... pee) { BYTE yyas{} = { 0x4C, 0x8B, 0xD1, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3 }; static BYTE* poop = (BYTE*)VirtualAlloc(NULL, sizeof(yyas), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); memcpy(poop, yyas, sizeof(yyas)); char* app; wcstombs(app, name, wcslen(name)); *(DWORD*)(poop + 4) = *(DWORD*)((DWORD*)GetProcAddress(GetModuleHandleW(module), app) + 4); auto fn = reinterpret_cast<void*(*)(Args...)>(&poop); return fn(Args...); }
BYTE yyas[] = { 0x4C, 0x8B, 0xD1, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3 } Никогда не пишется и не вызывается из void ф-и
у тебя в массив yyas не размечено сколько элементов и типа данных BYTE не существует только std::byte по крайне мере std::byte в c++ 17 ,а у меня не работает std::byte так-что unsigned char это тоже самое: unsigned char yyas[11] = { 0x4C, 0x8B, 0xD1, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3};