4

在我创建我的安装程序之前,我想使用NGEN.EXE它来生成我的程序集的本机图像。我希望这将使我的二进制文件保持不变Reflector。我对此是否正确?

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

编辑:我正在使用一个应用程序,它在与服务器交谈时使用硬编码密钥进行加密。使用 .NET,人们很容易就能拿到钥匙。

4

5 回答 5

5

我可以看到你试图实现的几个问题。

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

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

编辑:从每个新版本的 WGA 被黑客入侵的速度来看,我怀疑,如果您的软件远程有用,那么在您的软件的每个新版本发布后的几个小时内,有人会在互联网上(或 p2p 或其他任何东西)获得密钥,他们将是非常乐意拆解原生镜像的人。或者也许只是阅读机器代码:)
我个人的做法是确保您的应用程序运行良好且价格合理。诚实的人不会偷,不诚实的人不管你做什么都会想办法。最终,如果他们要运行您的应用程序,则您无法完全控制他们对它的操作,尽管您可以通过首先使用混淆器使他们使用反射器稍微困难一些,但最终它就像现实生活一样真的,锁只会把诚实的人拒之门外。

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

于 2009-02-25T12:45:38.147 回答
3

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

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

于 2009-02-25T12:36:15.610 回答
2

您不能只发送程序集的 ngen 映像。运行时仍然需要实际的程序集存在,即使它具有它的本机映像。原因是程序集元数据未传递到本机映像。

于 2009-02-25T12:36:58.590 回答
2

获取此软件列表:

  • {智能组装}
  • DeployLX CodeVeil
  • Dotfuscator .NET Obfuscator
  • Salamander .NET Obfuscator
  • Semantic Designs: C# Source Code Obfuscator
  • Spices.Net
  • Thinstall
  • Demeanor for .NET
  • .NET Reactor
  • IntelliLock
  • Eazfuscator.NET
  • SecureTeam CliSecure

These are obfuscators+linkers.

于 2011-02-14T11:40:50.233 回答
1

没有理由应该使用本机图像。该工具是为开发而设计的,以加快速度。它不是一个应用程序,它是一个图像,所以改变计算机 CPU,点网配置会使你的图像无效,所以它不是真的可用。破解你的软件是可能的,任何软件都被破解了,还有没有的?不要在意盗版,假设它存在:)

于 2009-03-12T04:39:11.077 回答