所以我想做的很简单;我想将一个函数写入另一个进程的内存并执行它。我所做的是获取函数的大小,并使用 WriteProcessMemory 来执行此操作。我已经成功创建了一个线程来运行这个函数,并使用作弊引擎的调试功能确认。该函数如下所示:
inline void __cdecl Test( )
{ }
看起来很简单。它不应该依赖任何需要重新定位的东西,所以它应该可以正常工作。它是内联的,因为我在标题中定义了它,如果相关的话。虽然这个函数什么都不做,但这就是作弊引擎中发生的事情:
奇怪的是它正在复制一个字符串,但更重要的是它正在调用一个函数?由于这个随机函数调用正在发生,程序崩溃,因为地址没有重新定位以匹配函数在新进程中的位置。所以,我的问题是:为什么它会调用一个函数,我怎样才能阻止这种情况发生?