C++ 如何在特定偏移量处存储变量

C++ 如何在特定偏移量处存储变量,c++,variables,offset,portable-executable,C++,Variables,Offset,Portable Executable,有没有办法将变量(在C++中)存储在PE文件中的特定偏移量处? 类似的问题:我可以定义存储在数据部分的变量的特定顺序吗 我听说有些程序可以在其可执行文件中存储设置。最简单的方法是使用参考资料部分。您不需要偏移量:LoadString取而代之的是一个ID,它在重建过程中是稳定的。然而,顾名思义,这只是负载部分。Windows在执行时锁定可执行文件,这使得SaveString部分更加困难 并不是说锁不重要,因为您的程序可能存储在\program Files\中,用户无论如何都不能在那里写入。根据数据

有没有办法将变量(在C++中)存储在PE文件中的特定偏移量处? 类似的问题:我可以定义存储在数据部分的变量的特定顺序吗

我听说有些程序可以在其可执行文件中存储设置。

最简单的方法是使用参考资料部分。您不需要偏移量:
LoadString
取而代之的是一个ID,它在重建过程中是稳定的。然而,顾名思义,这只是负载部分。Windows在执行时锁定可执行文件,这使得
SaveString
部分更加困难


并不是说锁不重要,因为您的程序可能存储在
\program Files\
中,用户无论如何都不能在那里写入。

根据数据的大小,您可以使用PE映像(如MS-DOS存根)中不推荐(未使用)的区域来存储变量。许多未使用区域的偏移是众所周知的(因为它们是由PE格式定义的)

这听起来好像你认为能够以这样的偏移量存储它们解决了某个问题。当你询问真正的问题时,或者至少告诉他们是什么问题时,它可能会更有用,这样人们可能会有更广泛的选择。我实际上不需要实现它。但不久前,我试图在可执行文件中保存设置,但找不到这样做的方法。谢谢,但实际上我对纯偏移解决方案更感兴趣:)。请记住,DLL可以重新定位。前任实际上从未重新定位过(因为他们总是先开始,因此从不与内存中的其他PE映像冲突)。