При обратном проектировании я нашел очень странную программу, которая использует соглашение о вызовах, которое передает один аргумент в eax (очень странный компилятор ??). Я хочу вызвать эту функцию сейчас, и я не знаю, как объявить ее, IDA определяет ее как
bool __usercall foo<ax>(int param1<eax>, int param2);
где param1 передается в регистре eax. Я пробовал что-то вроде
bool MyFoo(int param1, int param2)
{
__asm mov eax, param1;
return reinterpret_cast<bool(__stdcall *)(int)>(g_FooAddress)(param2);
}
Однако, к сожалению, мой компилятор использует регистр eax при загрузке param2 в стек, есть ли способ, как я могу сделать это чисто, не записывая весь вызов встроенным ассемблером? (Я использую Visual Studio, если это имеет значение)