【问题标题】:Embedded resources in Win32 ApplicationWin32 应用程序中的嵌入式资源
【发布时间】:2010-02-20 06:06:05
【问题描述】:

我在我的 Win32 应用程序中嵌入了一个 EXE 作为资源。

我正在注册表中查找某个值。如果该值存在并且正确,那么我将嵌入的 EXE 复制到本地文件系统并从那里执行它。

我不希望它从我的 EXE 中提取出来。

我应该做些什么来防止这种情况发生,还是已经不可能了?

谢谢。

【问题讨论】:

  • 您可能应该将答案标记为正确,并对所有对您有帮助的答案投赞成票。

标签: winapi embedded-resource


【解决方案1】:

但您可以将 exe 作为 .obj 或静态数组而不是作为资源嵌入。这将使攻击者更难在您的代码中找到,但仍然不是不可能的。

您可以使用 unix objcopy 工具将您的 exe 转换为 .obj 文件,然后在您的 c 代码中链接到该文件。有人必须反编译您的代码才能找到 .exe,这比使用资源提取器要困难得多。

Embed data in a C++ program

【讨论】:

    【解决方案2】:

    没有什么是不可能的,事实上,从可执行文件中剥离资源非常容易。例如,这是来自 Google 搜索的first link。另一方面,您已经剥离了 exe 并将其保存到用户系统上的文件中,任何足以找到嵌入资源的复杂人员也将能够找到您提取的文件。我不会花太多时间担心它。

    【讨论】:

    • 你是对的。 “不可能”是一个苛刻的词 :) 如何将资源存储为加密并在执行之前对其进行解密?还有一个好处:可以在不导出到本地文件系统的情况下执行吗?
    • 不。您必须将密钥存储在某个地方。如果攻击者有足够的时间和耐心,他肯定会找到的。 (是的,我很确定你可以从内存中执行 EXE)
    • 虽然有可能,但似乎并不是一件容易的事。 gamedev.net/community/forums/…
    【解决方案3】:

    我必须保护应用程序。我无法修改应用程序。我所能做的就是围绕它编写一些小实用程序,比如创建一个在线串行系统、唯一的硬件信息哈希存储、加载程序 exe 等。

    但现在我发现如果不修改原始应用程序,我的意图几乎是无用的。如有任何帮助,我将不胜感激。

    【讨论】:

    • 再读一遍,也许我应该从中提出一个新问题:)
    猜你喜欢
    • 2012-07-08
    • 2016-06-16
    • 1970-01-01
    • 2011-01-29
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多