我想在我的进程的特定地址范围内写入少量内存。
示例
5 bytes
0x 00 40 00 00
0x 00 A0 00 00
我想写的范围已由流程分配。因此,我不能简单地使用VirtualAlloc
分配新的记忆。
但是,由于所需地址空间中的页面用于程序代码,因此它们不是100%使用的。在某处有足够的空间来写我的5个字节。
我需要做些什么才能确保不会覆盖必要的内存?
答案 0 :(得分:3)
我不认为有一个很好的,一般的方法来做你想要的。既然看起来你在谈论Windows以及加载PE的默认位置,我会在这里做一些可能对你有帮助的假设。
如果您愿意解析PE标头,通常可以在那里找到松弛空间。查看各部分之间和功能之前的区域。根据应用程序的构建方式,您可能会发现要用INT3填充的函数之间的区域可能足以满足您的需求。
如果您向我们提供了有关您正在尝试做什么的更多信息,我们可能会提供更多帮助。你可以在加载之前修补二进制文件,还是必须在运行时完成所有操作?