簡體   English   中英

如何在 x64 Visual C++ 中執行裸函數和內聯匯編器

[英]How to do a naked function and inline assembler in x64 Visual C++

我正在使用裸函數和內聯匯編器代理方法調用。

__declspec(naked) void ProxyFunction()
{
    static const unsigned int addressofRealFunction = 0x0041b200;
    __asm
    {
        jmp [addressofRealFunction];
    }
}

如何將其轉換為 x64? 在 Visual Studio 中,x64 沒有內聯匯編器或裸函數。

Naked 刪除程序集序言和結語。 我需要這樣做以確保堆棧幀對於調用保持等效。

你會怎么辦?

嘗試直接編譯它:

void ProxyFunction()
{
    RealFunction();
}

查看編譯器是否將其優化為裸跳轉。 它可能。

如果 Microsoft 建議將 masm 用於此類任務對您不起作用,那么一種方法是查看分配頁面,在其上設置可執行屬性,然后使用直接內存寫入將操作碼放置在從開頭開始的偏移處頁面的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM