C动态包含库,通过将原始函数数据复制到内存块



我想,如果我有一个单独函数的原始机器代码输出,我可以满怀恐惧地将其读取到内存块中,只需创建一个指向那里的函数指针,就可以在运行时动态地包含一个函数。

这行得通吗?

是的,它可以工作,但不能以跨平台的方式工作。malloc返回的内存是不可执行的,至少不能保证它是可执行的。在Windows上,您必须使用VirtualAlloc,然后使用带有PAGE_EXECUTE_READ标志的VirtualProtect。在Linux上,查看mprotect。基于所使用的编译器和机器体系结构,也可能存在差异,对于Linux+GCC示例,请参阅以下代码golf。

尽管为什么不使用LoadLibrary+GetProcAddress(Win(或dlopen+dlsym(Linux(动态加载共享库呢?

相关内容

  • 没有找到相关文章

最新更新