一开始老是申请内存失败,返回487,后来找到了解决方法,主要就是VirtualAlloc第三个参数不要写MEM_RESERVE,然后申请的空间也不能太大,否则还是会失败的。
假如你看到了这篇文章,我猜你可能是在做隐藏模块的作业,课上老师讲了两种做法,第一种就是让自己在高地址运行,把游戏注入到0x400000;另一种是把自己注入到游戏。我觉得第二种更好,虽然实现起来麻烦些,但是不容易出bug,第一种方式如果游戏主模块比较大,很可能会VirtualAlloc失败。
下面是简单的代码说明:
LPVOID pImageBase = VirtualAlloc((LPVOID)0x400000,0x22000,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
printf("0x%x\n",(DWORD)pImageBase);
printf("%d\n", GetLastError());
在我这里是可以申请到的。
如果第三个参数太大,就会申请失败了。
---------------------
作者:hambaga
来源:CSDN
原文:https://blog.csdn.net/kwansy/article/details/107924861
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件