我想NGEN.EXE
在创建安装程序之前使用以生成程序集的本机映像.我希望这能保持我的二进制文件Reflector
.我对此是否正确?
我刚刚了解到所有本机映像现在都存储在本机映像缓存中.有没有办法获得本机二进制文件,然后我可以使用安装程序打包?另一方面,生成本机图像后是否可以摆脱原始组件?
编辑:我正在使用一个应用程序,它与服务器通信时使用硬编码密钥进行加密.使用.NET,人们可以轻松地将钥匙放在钥匙上.
我可以看到你试图实现的几个问题.
1)正如@Mehrdad所提到的,即使存在本机图像,元数据仍然需要程序集.
2)本机映像仅在编译它的机器上有效.JIT编译器执行通常无法完成的优化,因为它完全知道代码需要运行的硬件.
3)即使是原生图像也可以解编译.appart一个托管的dll稍微容易一点.
你介意告诉我们你为什么要隐藏你的源代码?
编辑:从每个新版本的WGA被攻击的速度来判断,我怀疑,如果你的软件远程有用,有人会在每个新版软件的几小时内将密钥输出到互联网(或p2p或其他),他们将成为那些非常乐意拆解原生图像的人.或者也许只是阅读机器代码:)
我个人的approch将确保您的应用程序运行良好,价格合理.诚实的人不会偷走它,不诚实的人会找到一种方式,不管你做什么.如果他们有你的应用程序运行那么你可以做任何事情来完全控制他们用它做什么,虽然你可以通过先使用混淆器使他们稍微使用反射器,但最后它就像现实生活一样真的,锁只能保持诚实的人.
当然,如果您可以将应用程序功能的一些重要部分移出客户端并转移到Web服务中,那么您将有更多机会.您可以为客户端创建包含用户名和密码的帐户,应用程序在运行时请求此帐户并使用它对Web服务进行身份验证.如果他们对此应用程序的使用已过期,则Web服务拒绝其请求.