C 在进程内存中查找未使用的内存

C 在进程内存中查找未使用的内存,c,memory,memory-management,C,Memory,Memory Management,我正在寻找一种可靠的方法,在C程序的进程中查找未使用的内存,因为我需要将一些数据“注入”到某个地方,而不会损坏任何东西 每当我找到一个只有零的区域,这是个好兆头。但是,不能保证:它仍然可能崩溃。所有非零内存都很可能被使用,因此无法可靠地覆盖(大多数内存中都有某种数据) 我知道你不可能真正知道(比如没有应用程序的源代码),但是有没有什么启发方法是有意义的,比如选择特定的段或以特定的方式查看内存?由于数据可能是200KB,这相当大,因此找到合适的地址范围可能很困难/繁琐 通过操作系统函数分配内存在这

我正在寻找一种可靠的方法,在
C
程序的进程中查找
未使用的内存,因为我需要将一些数据“注入”到某个地方,而不会损坏任何东西

每当我找到一个只有零的区域,这是个好兆头。但是,不能保证:它仍然可能崩溃。所有非零内存都很可能被使用,因此无法可靠地覆盖(大多数内存中都有某种数据)

我知道你不可能真正知道(比如没有应用程序的源代码),但是有没有什么启发方法是有意义的,比如选择特定的段或以特定的方式查看内存?由于数据可能是
200KB
,这相当大,因此找到合适的地址范围可能很困难/繁琐


通过操作系统函数分配内存在这种情况下不起作用。

如果不深入了解远程进程,您就无法知道实际分配给该进程的任何内存都是“未使用的”

仅仅是查找可写内存(不管当前内容如何)就会导致进程崩溃或更糟


要求操作系统在另一个进程中分配更多的内存是一种方法,这样您就知道该进程没有使用内存,并且该进程不会通过自己的分配来接收该地址。

这听起来像是XY问题。您的问题的具体上下文是什么?@melpomene:上下文是,这是使应用程序加载我的自定义数据的唯一方法,因为由于加密、打包和类似原因,文件系统无法(同样容易)修改为加载我的自定义数据。什么是“此”,什么是“应用程序”,什么是“我的自定义数据”?你到底打算怎么做,如何使用这些数据。您需要修改代码以使用数据。如果您没有修改权限,那么您的尝试是邪恶的,不受鼓励。@melpomene:“这”是上面描述的方法(注入进程内存),“应用程序”是其他人的C应用程序,使用文件,“我的自定义数据”是表示要使用的文件而不是默认文件的字节。我已经知道如何让应用程序加载它。我只需要相应的可用内存来加载文件的字节,因为查找未使用的地址范围很麻烦。我想这已经足够解释了。