[英]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.