如果您正在编写类似 JIT 的东西,它可以动态生成本机代码,那么您可以做所有这些事情。
然而,为了生成本机代码,您显然需要了解您所在系统的一些实现细节,包括其函数指针如何工作以及需要对可执行代码采取哪些特殊措施。例如,在某些系统上,修改包含代码的内存后,您需要刷新指令缓存,然后才能安全地执行新代码。您无法使用标准 C 或 C++ 来便携式地完成所有这些操作。
您可能会发现,当您覆盖该函数时,只能对程序在运行时生成的函数执行此操作。作为正在运行的可执行文件一部分的函数很容易被操作系统标记为写保护。