2009-02-25 32 views
4

我想在创建我的安装程序之前使用NGEN.EXE来生成我的程序集的原始图像。我希望这会保持我的二进制文件Reflector -proof。我对此有纠正吗?在缓存之外生成原生图像

我刚才明白,所有原生图像现在都存储在原生图像缓存中。有没有办法得到本地的二进制文件,然后我可以用安装程序打包?另一方面,是否有可能在生成原生图像后摆脱原始程序集?

编辑:我正在使用应用程序与服务器交谈时使用硬编码密钥进行加密。使用.NET,人们可以轻松地按住键。

回答

3

这非常不被NGEN和.net框架支持,但有第三方工具可以做到这一点,谷歌为“.net链接器”。

我建议不要这样做,MS有正当理由不支持这一点。

+3

“MS有正当理由不支持这一点。”我听到的比我想要的要多一点。如果只有MS能让我承担我想要的风险,那么我可以每天早点离开工作。 – 2009-02-25 12:42:24

+0

一些原因与安全有关,如果他们让你这样做,你可以绕过.net安全系统,现在你可能是值得信赖的,但如果你可以绕过系统,那么坏人也可以。 – Nir 2009-02-25 13:06:48

2

您不能仅装运组件的ngen图像。运行时仍然需要实际的程序集存在,即使它具有本地图像。原因是程序集元数据不会转移到本地映像。

+0

“原因是程序集元数据不会转移到本地映像。”这正是我想要的。没有元数据的本地图片。 – 2009-02-25 12:43:34

+0

但这不是CLR想要的。 CLR需要元数据。基本上,.NET链接器等东西不直接使用CLR。他们以某种方式使用*黑客*版本工作。 “ – 2009-02-25 12:55:09

5

我可以看到你试图存档的几个问题。

1)正如@Mehrdad所提到的,即使存在本机图像,程序集仍然是元数据所必需的。
2)本机图像仅在其编译的机器上有效。 JIT编译器的优化通常无法完成,因为它完全知道代码需要运行的硬件。
3)即使是本地图像也可以反编译。使用appart管理的dll稍微容易一些。

你介意告诉我们为什么你想隐藏你的源代码吗?

编辑: 根据每个新版本WGA被入侵的速度来判断,我怀疑,如果你的软件远程有用,有人会在每个新的数小时内在互联网上(或P2P或任何其他)你的软件的版本,他们将是非常乐意反汇编本地图像的人。或者,也许只是阅读机器代码:)
我个人的努力将是确保您的应用程序运行良好,价格合理。诚实的人不会偷它,不诚实的人会找到一种方式,不管你做什么。最后,如果他们有你的应用程序运行,那么你无法完全控制他们对它的处理,尽管你可以稍微难以让他们先使用混淆器来使用反射器,但最终它就像现实生活一样真的,锁只能阻止诚实的人。

当然,如果您可以将应用程序功能的某些重要部分从客户端迁移到Web服务中,那么您将有更多机会。您可以为客户创建包含用户名和密码的帐户,应用程序在运行时请求该帐户并使用它对Web服务进行身份验证。如果他们对此应用程序的使用已过期,则Web服务拒绝他们的请求。

1

你没有理由使用原生图像。这个工具是为了加速开发而制造的。这不是一个应用程序,它是一个如此改变计算机CPU的图像,Dot网络配置将使您的图像无效,因此它不是真的可用。 破解你的软件是可能的,任何软件破解,有没有的? 不在乎盗版,假设它的存在:)

2

获取软件这个名单:

  • {} smartassembly
  • DeployLX CodeVeil
  • Dotfuscator的.NET混淆
  • 蝾.NET混淆器
  • 语义设计:C#源代码混淆器
  • Spices.Net
  • Thinstall
  • 风度用于.NET
  • .NET反应堆
  • IntelliLock
  • Eazfuscator.NET
  • SecureTeam CliSecure

这些是模糊处理+接头。