【发布时间】:2010-02-20 06:06:05
【问题描述】:
我在我的 Win32 应用程序中嵌入了一个 EXE 作为资源。
我正在注册表中查找某个值。如果该值存在并且正确,那么我将嵌入的 EXE 复制到本地文件系统并从那里执行它。
我不希望它从我的 EXE 中提取出来。
我应该做些什么来防止这种情况发生,还是已经不可能了?
谢谢。
【问题讨论】:
-
您可能应该将答案标记为正确,并对所有对您有帮助的答案投赞成票。
我在我的 Win32 应用程序中嵌入了一个 EXE 作为资源。
我正在注册表中查找某个值。如果该值存在并且正确,那么我将嵌入的 EXE 复制到本地文件系统并从那里执行它。
我不希望它从我的 EXE 中提取出来。
我应该做些什么来防止这种情况发生,还是已经不可能了?
谢谢。
【问题讨论】:
但您可以将 exe 作为 .obj 或静态数组而不是作为资源嵌入。这将使攻击者更难在您的代码中找到,但仍然不是不可能的。
您可以使用 unix objcopy 工具将您的 exe 转换为 .obj 文件,然后在您的 c 代码中链接到该文件。有人必须反编译您的代码才能找到 .exe,这比使用资源提取器要困难得多。
【讨论】:
没有什么是不可能的,事实上,从可执行文件中剥离资源非常容易。例如,这是来自 Google 搜索的first link。另一方面,您已经剥离了 exe 并将其保存到用户系统上的文件中,任何足以找到嵌入资源的复杂人员也将能够找到您提取的文件。我不会花太多时间担心它。
【讨论】:
我必须保护应用程序。我无法修改应用程序。我所能做的就是围绕它编写一些小实用程序,比如创建一个在线串行系统、唯一的硬件信息哈希存储、加载程序 exe 等。
但现在我发现如果不修改原始应用程序,我的意图几乎是无用的。如有任何帮助,我将不胜感激。
【讨论】: