我正在用 C# 开发一个软件。当用户单击图标时,在用户仪表板上会有我们应用程序的一些图标,应用程序(exe 文件)将从我们的服务器下载并存储在用户计算机的某个位置。我想让这个应用程序(exe文件)只能从这个软件执行,而不是通过文件系统直接访问。他们是否有任何解决方案,以便用户只能通过软件执行应用程序而不是直接访问它?
问问题
337 次
2 回答
3
不,这完全不可能*。不管你的加密有多好,不管你的程序有多模糊,人们都会恢复密钥并破解它。更不用说要执行代码,计算机必须拥有未加密代码的副本。当有副本时,可以轻松制作另一个副本。不要打扰。
* 你能得到的最接近它的可能是实现一种全新的语言并在你的虚拟机中运行它,这被严重混淆了。然而,众所周知,不存在不可逆转的混淆。此外,这会非常慢,因为您永远无法编译它,因为害怕从内存中恢复内容,并且您必须创建一个新的编译器,因为与本机代码的任何相似之处都会使其变得微不足道。
于 2012-04-08T16:14:06.310 回答
0
好问题。您可以通过包装器将程序集解密到内存,包装器在验证许可证后从服务器获取密钥,然后包装器将创建域并在其中执行该程序集。为了避免调试软件,您可以使用来自 codeplex/com 的 Confuser
于 2012-04-08T16:16:19.570 回答