VB.NET中的防篡改文件

VB.NET中的防篡改文件,.net,vb.net,security,.net,Vb.net,Security,我有一个小脚本编写引擎,可以运行基本的代码。我希望如果用户保护代码,那么除了我的程序之外,没有人能够打开代码 现在我找到了一个链接:它使用编码对代码进行加密。它使用密钥进行加密和解密 我想知道如何在我的应用程序中存储密钥,这样就不会有其他人知道了。我确实混淆了我的程序,所以字符串等不容易读取。这很有帮助。除了使用变量和将密钥存储在EXE文件本身之外。我还有什么其他安全选项 我使用上述方法进行加密和解密的逻辑是否安全?我想要足够的安全,也许不是很好 另外,上面代码的好处是不需要创建临时文件来解密,

我有一个小脚本编写引擎,可以运行基本的代码。我希望如果用户保护代码,那么除了我的程序之外,没有人能够打开代码

现在我找到了一个链接:它使用编码对代码进行加密。它使用密钥进行加密和解密

我想知道如何在我的应用程序中存储密钥,这样就不会有其他人知道了。我确实混淆了我的程序,所以字符串等不容易读取。这很有帮助。除了使用变量和将密钥存储在EXE文件本身之外。我还有什么其他安全选项

我使用上述方法进行加密和解密的逻辑是否安全?我想要足够的安全,也许不是很好

另外,上面代码的好处是不需要创建临时文件来解密,这样用户就无法搜索临时文件


如果有人能提供有价值的建议,我将非常高兴。

这个问题被反复提出。简言之,如果您的应用程序可以访问密钥,您可以使访问密钥变得更困难,但并非不可能(至少在通用硬件和软件上)。即使是在封闭和锁定的系统(如游戏机)上,私钥也迟早会从硬件中提取出来

简言之:您希望为用户提供某种针对伪代码的软件保护。对于本机代码和解释代码,这是一项尚未可靠解决的任务,而对于解释代码,这项任务可能更为复杂

对密钥进行良好的模糊处理将赶走大多数不太熟练的攻击者。混淆密钥的最简单方法是使用程序的某些文本短语作为密钥。这使得使用密钥的操作对于偶尔的潜伏者来说不那么明显(专业人员知道在应用程序中查找加密密钥的不同方法)


另一个问题是用户的代码必须被解密才能被引擎执行,对吗?而此时,一个普通的熟练黑客只需捕获内存并从内存中提取脚本

用户是否有权访问该程序或通过网络服务访问?在第一种情况下,您无法为归档完美的安全性做任何事情,因为如果程序包含用于解密的所有信息,那么用户就可以访问它。在第二种情况下,您可以使用公钥加密使其具有99%的安全性。虽然我的程序可以访问我的服务器,但安全性在这里并不那么重要。我将从我的程序标题或其他内容中导出密钥文本。谢谢您的输入Eugene。您能解释一下“混淆密钥的最简单方法是使用程序的某些文本短语作为密钥。”。如果我使用私钥=“xyzabc”。搞乱我的应用程序,可以吗。加号是我的加密算法。@Greatchap如果使用对称加密算法,请在应用程序中获取一些文本常量(例如一些错误消息或应用程序标题),并从中派生密钥(请参阅),然后使用已知的加密算法。您引用的代码在您的场景中是一个可能的选项,是的。非常感谢Eugene。我将从程序的某个部分派生密钥文本。