3
雖然逆向工程我繞過一個非常奇怪的程序,它使用調用約定,在eax中傳遞一個參數(非常奇怪的編譯器??)。現在我要調用該函數,我不知道如何申報呢,IDA將其定義爲C++自定義調用約定
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)
我知道,但MSVC快速調用使用ECX + EDX而不是EAX,因此它不是我所需要的:-( – Listing
謝謝我按照您的建議退回到內聯彙編程序,我首先想到您幾乎總是可以避免內聯彙編程序,這是我遇到的第一種情況,你不能。 – Listing