【问题标题】:how encrypt an executeable file and make that encrypted file executeable without using extra file for decryption?如何加密可执行文件并使该加密文件可执行而不使用额外文件进行解密?
【发布时间】:2012-08-15 19:04:15
【问题描述】:

我们如何使用 c# 加密可执行文件,并在不使用额外文件进行解密的情况下使该加密文件仍然可执行?
意味着解密方法应该在文件中。
如何用 c# 语言编写类似的东西?

提前感谢

【问题讨论】:

  • 您要加密的exe文件是.net程序集还是本机可执行文件?
  • 解密密钥从何而来?用户是否输入密码?您是否使用了正确的密钥派生技术?
  • 如果您想保护可执行文件不被用户检查 - 您知道这永远不会提供 100% 的安全性吗?如果可执行文件可以自行解密,那么熟练的用户也可以。
  • Exe 需要一个密钥,无论是来自用户还是通过 SSL 来自某个服务器。
  • @Pekka 除非你发布了一个没有任何信息的可执行文件,但不是很有用。

标签: c# encryption exe windows-applications


【解决方案1】:

在客户端机器上存储加密数据并让它自动解密意味着您也必须在该机器上存储解密密钥。这意味着您无法有效地保护数据并将其提供给用户。这种加密仅用于减缓用户篡改数据的速度,因为需要时间来恢复解密密钥和算法。

如果要对可执行文件本身的代码进行加密,防止用户篡改,这是一个非常非常复杂的话题。只是坚持和时间的问题。您不会在一篇 StackOverflow 帖子中得到此类问题的答案。您必须学习 PE 和 .NET 文件格式、有关可执行加载程序以及 mscor* 的操作系统内部结构。

如果你需要存储一些数据

  • 选择一些加密算法并将您的数据加密到一个文件中(参见this question
  • 将加密文件作为嵌入式资源添加到您的 c# 项目中
  • 在运行时访问这个文件(见this question)并解密它(已经在第一点讨论过)

【讨论】:

  • 好的,谢谢您的关注。但篡改数据对我来说并不重要。我正在为我的场景寻找解决方案。就这个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多