Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Win32在可执行文件中替换字符串_C++_C_Visual Studio_Exe_Winapi - Fatal编程技术网

C++ Win32在可执行文件中替换字符串

C++ Win32在可执行文件中替换字符串,c++,c,visual-studio,exe,winapi,C++,C,Visual Studio,Exe,Winapi,我正在寻找一种很好的方法来替换本机win32编译exe中的几个字符串。例如,我的代码中包含以下内容: const char *updateSite = "http://www.place.com" const char *updateURL = "/software/release/updater.php" 我需要在exe中用其他任意长度的字符串修改这些字符串。我意识到我可以将这种配置存储在其他地方,但将其保存在exe中符合我的应用程序的可移植性要求。如果您能提供帮助和/或建议,我将不胜感激

我正在寻找一种很好的方法来替换本机win32编译exe中的几个字符串。例如,我的代码中包含以下内容:

const char *updateSite = "http://www.place.com"
const char *updateURL  = "/software/release/updater.php"
我需要在exe中用其他任意长度的字符串修改这些字符串。我意识到我可以将这种配置存储在其他地方,但将其保存在exe中符合我的应用程序的可移植性要求。如果您能提供帮助和/或建议,我将不胜感激

谢谢

更新:我在Metasploit项目中发现了一些代码,似乎可以做到这一点:
在PE文件中是全局重新定位表-它是地址列表,例如,必须在运行时存储的全局变量或常量,例如,必须由PE加载程序更改的字符串。如果您知道这个特定变量是哪个条目,您可以获取它的地址,然后手动更改它。然而,这将是一个彻底的婊子,你需要深入了解你最喜欢的编译器和PE格式。只需使用XML、Lua或其他完全可移植的东西就更容易了——它们正是为了这种目的而发明的

编辑:


为什么不直接使用常量字符**?这是一个正常的运行时变量有什么问题吗?

在PE文件中是全局重新定位表-它是一个地址列表,例如,必须在运行时存储的全局变量或常量,例如,必须由PE加载程序更改的字符串。如果您知道这个特定变量是哪个条目,您可以获取它的地址,然后手动更改它。然而,这将是一个彻底的婊子,你需要深入了解你最喜欢的编译器和PE格式。只需使用XML、Lua或其他完全可移植的东西就更容易了——它们正是为了这种目的而发明的

编辑:


为什么不直接使用常量字符**?这是一个正常的运行时变量,有什么问题吗?

我不会把EXE本身搞得一团糟,如果你真的需要一个文件,那么就用老的zip追加技巧,把你的配置放进去

可能是这样的:

> BINARY DATA
> ZIP FILE DATA
> 32bit unsigned int which's value is the size of the appended zip file
优点:

易于扩展/维护 您不会弄乱exe本身 你可以在里面放很多东西 相反:

您需要链接一些压缩库
如果你不想压缩它,那就自己写一些简单的未压缩的归档文件。

我不会把EXE本身搞得一团糟,如果你真的需要一个文件,那么就用老的zip追加技巧,把你的配置放进去

可能是这样的:

> BINARY DATA
> ZIP FILE DATA
> 32bit unsigned int which's value is the size of the appended zip file
优点:

易于扩展/维护 您不会弄乱exe本身 你可以在里面放很多东西 相反:

您需要链接一些压缩库
如果您不想压缩它,那么只需编写一些自己的简单的未压缩归档文件。

我认为这是将字符串存储在字符串表资源中的最佳位置。它被合并到您的.EXE文件中,因此不会影响可移植性

改变这些价值观

在代码中使用LoadString WinAPI或更好的方法来加载值


还有第三方软件允许您修改已编译的.EXE中的字符串,而无需重新编译。

我认为这是将字符串存储在字符串表资源中的最佳位置。它被合并到您的.EXE文件中,因此不会影响可移植性

改变这些价值观

在代码中使用LoadString WinAPI或更好的方法来加载值


还有第三方软件,允许您修改已编译的.EXE中的字符串,而无需重新编译。

这是非常不明智的,如果可以可靠地执行的话。您能否发布这些可移植性要求,以澄清为什么这是最好的方法?是否可以将代码更改为使用嵌入式资源字符串表中的字符串而不是硬编码字符串?Steve-我正在尝试一个单一文件解决方案。谢谢你的评论。我有一种感觉,这将是一个有点黑客的事情来尝试。梅里克-我只是在调查!这似乎是一个很好的解决方案。这是非常不明智的,如果它甚至可以可靠地做到的话。您能否发布这些可移植性要求,以澄清为什么这是最好的方法?是否可以将代码更改为使用嵌入式资源字符串表中的字符串而不是硬编码字符串?Steve-我正在尝试一个单一文件解决方案。谢谢你的评论。我有一种感觉,这将是一个有点黑客的事情来尝试。梅里克-我只是在调查!这似乎是个好办法。