我在使用裸函数和内联汇编程序代理方法调用。
__declspec(naked) void ProxyFunction()
{
static const unsigned int addressofRealFunction = 0x0041b200;
__asm
{
jmp [addressofRealFunction];
}
}
如何将其翻译为x64?在visual studio中,没有用于x64的内联汇编程序或裸函数。
Naked删除了集会序幕和结语。我需要这个以确保堆栈帧保持等效于调用。
你会做什么?
答案 0 :(得分:4)
尝试直接编译:
void ProxyFunction()
{
RealFunction();
}
查看编译器是否将其优化为裸跳。它可能会。
答案 1 :(得分:1)
如果Microsoft建议将masm用于此类任务对您不起作用,那么一种方法是研究分配页面,在其上设置可执行属性,然后使用直接内存写入将偏移量放在那里在页面的开头。
或者,Google可能会为您提供答案here