0

我有指向地址的函数指针。

#define CSpellBookWnd__MemorizeSet                                 0x557CD8

    #define FUNCTION_AT_ADDRESS(function,offset) __declspec(naked) function\
{\
    __asm{mov eax, offset};\
    __asm{jmp eax};\
}

FUNCTION_AT_ADDRESS(void  CSpellBookWnd::MemorizeSet(int *,int),CSpellBookWnd__MemorizeSet);

我只是想而不是调用该函数做一些 NOP

4

2 回答 2

0

该代码看起来只是创建了一个转发方法,该方法重定向到其他地方定义的实现。如果您希望该方法不执行任何操作,只需删除FUNCTION_AT_ADDRESS调用,并定义您自己的空方法:

void  CSpellBookWnd::MemorizeSet(int *,int) {}
于 2013-05-29T09:05:41.887 回答
0

如果你想覆盖一个函数,你不能正常这样做,因为内存页是受保护的。如何在内存页上设置保护标志取决于操作系统。不过,不需要汇编程序。

于 2013-05-29T06:45:03.563 回答