【问题标题】:Application with a patchable embedded configuration具有可修补嵌入式配置的应用程序
【发布时间】:2020-06-19 21:39:28
【问题描述】:

我在一个跨平台的 C++ 应用程序(Visual C++、GCC、clang++ 关于目标平台)上工作。我想将配置字符串嵌入到我的应用程序中,并有可能在编译后修补二进制文件以更改配置并使其预先配置。 现在我只考虑声明一个配置变量:

const char* embeddedConfig = "*magic*random characters filling the maximum configuration size";

Patcher 将在二进制文件中搜索魔法并将其替换为实际配置。 我不确定hacky方法的稳定性。有没有更可靠的方法(可能是特定于编译器的)?

【问题讨论】:

  • 为什么不在可执行文件附近放一个默认配置文件?
  • 在很多情况下它很有用。例如,我们预先配置了一个 LogMeIn 客户端可执行文件以自动连接到特定端点。只需下载并启动。看起来很有用

标签: c++ gcc visual-c++ clang++


【解决方案1】:

如果您保持文本大小不变并在任何函数之外声明常量,这将起作用。这些常量被编译器简单地放入二进制的数据部分。

但是,如果您使用代码签名,则需要对二进制文件重新签名。

【讨论】:

    【解决方案2】:

    将字符串作为资源嵌入并使用UpdateResourceA 函数。见here。

    【讨论】:

    • 啊,公平点。我没有注意到跨平台的要求。
    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2012-03-30
    相关资源
    最近更新 更多