在 .NET 程序集中构建安全意识:第 2 部分 - 学习如何保护你的 .NET 程序集免受篡改






4.59/5 (39投票s)
2004年11月1日
3分钟阅读

197580

1821
在 .NET 程序集中构建安全意识:第 2 部分 (共 3 部分)
免责声明
NeCoders 不对因本文提供的信息导致的任何软件/文件被破解案例负责。
总体概述
在阅读第 2 部分之前,请确保您已经阅读了第 1 部分,因为它们是相关的。在本文中,我将展示如何保护你的 .NET 程序集免受篡改。我相信你听说过数字签名方法。简而言之,你可以将强名称密钥附加到 .NET 程序集,以保护它免受篡改。强名称密钥是 RSA 1024 位加密,破解它绝非易事。你需要强大的计算能力才能获得该私钥。
为什么使用强名称??
当我第一次接触到它时,我不知道它意味着什么。
第一个场景
我不确定你是否遇到过这种情况,但我遇到了。前段时间我一直在考虑保护我的 .NET 程序集,并尝试阅读有关如何操作的文章。根据我读到的内容,它建议我使用强名称密钥。它继续解释了它的好处,但相当含糊。它假设我可以想象作者可以想象的东西,最终让我怀疑这个所谓的强名称有什么特别之处。
我为什么会有这种感觉?好吧,原因是我对此有很多疑问。它既没有加密我的代码,也没有从像 .NET Reflector 这样的反编译器中隐藏我的代码。它甚至与混淆无关。那么强名称是用来做什么的呢?一种说服公众它保护的程序集是安全的营销工具?
第二个场景
你的上级来找你,让你在你的程序集中实现一个强名称密钥。然后当你回答,为什么使用强名称时,他们会说这是行业中其他人正在做的事情;我们也应该效仿他们。
演示
在这个演示中,我将向你展示如何将强名称密钥附加到你的程序集。
测试机器规格
-
Windows XP 专业版 SP 1
-
Intel Pentium 4 2.6GHz
-
256MB DDR-RAM
-
Visual Studio .NET 2003 专业版
- Microsoft .NET Framework 1.1
3. 强名称已成功创建。现在如何将它附加到你的解决方案?
4. 在你的 CrackingIL 解决方案中打开 AssemblyInfo.cs 的源代码,并在 AssemblyKeyFile 中输入此代码。
5. 构建你的项目,并在 Visual Studio .NET 2003 中按 F5 运行它。
6. 现在,打开 Visual Studio .NET 2003 命令提示符,并键入“ildasm CrackingIL.exe /out=CrackingIL.il”
7. 用任何文本编辑器打开 CrackingIL.il。我选择了记事本。
8. 搜索这一行
9. 然后将其从“Welcome to NeCoders”更改为“I can’t hack you, why!”
10. 保存文件。在 Visual Studio .NET 2003 命令提示符中键入此命令“ilasm CrackingIL.il”。
11. 执行 CrackingIL.exe。
你将看到以上内容和以下内容
12. 这意味着你不能简单地操纵别人的 .NET 程序集并将其转换回来。恭喜,你已经成功地用强名称保护了你的程序集。
结论
我希望从本文中,你能对强名称以及它如何帮助保护你的 .NET 程序集有一些简要的了解。我已经完成了本系列的第 3 部分。请务必查看一下。
参考文献
无