一开始老是申请内存失败,返回487,后来找到了解决方法,主要就是VirtualAlloc第三个参数不要写MEM_RESERVE,然后申请的空间也不能太大,否则还是会失败的。
假如你看到了这篇文章,我猜你可能是在做隐藏模块的作业,课上老师讲了两种做法,第一种就是让自己在高地址运行,把游戏注入到0x400000;另一种是把自己注入到游戏。我觉得第二种更好,虽然实现起来麻烦些,但是不容易出bug,第一种方式如果游戏主模块比较大,很可能会VirtualAlloc失败。
下面是简单的代码说明:
LPVOID pImageBase = VirtualAlloc((LPVOID)0x400000,0x22000,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
printf