Здравствуйте, пффф, Вы писали:
П>Я читал про va_args.
П>Как оно мне поможет, если я хочу перехватить функцию с элипсисом, и при этом у оригинальной функции нет версии с va_args
Тогда прийдется похачить,
наподобие
#include <windows.h>
#include <stdio.h>
unsigned char BswapData[] =
{
0x0F, 0xC9, // bswap ecx
0x89, 0xC8, // mov eax, ecx
0xC3 // ret
};
unsigned long (__fastcall *Bswap)(unsigned long) =
(unsigned long (__fastcall *)(unsigned long)) &BswapData[0];
int main(void)
{
DWORD dummy;
VirtualProtect(BswapData, sizeof(BswapData), PAGE_EXECUTE_READWRITE, &dummy);
printf("0x%lX\n", Bswap(0x10203040));
return 0;
}
Сделать свой ручной jmp, порешать вопросы со стеком и будет тебе счастье.