日期:2014-05-20  浏览次数:20763 次

.net 的SNK强名,混淆,加壳他们之间的区别?
这三个之间的区别,及用途不是很清楚,各位大位讲一下?

------解决方案--------------------
强名是为了实现唯一的标识。比如你有一个A.dll,如果没有强名,别人也有一个A.dll就不能区分了。
混淆是为了加大破解代码的难度。.NET的MSIL还是比较容易读懂的,如果不混淆,所有的变量名和方法都清晰可见,很容易就读懂你的逻辑了。
加壳没有用过,应该也是一种防止破解的方法吧。貌似是在本地代码中使用的。
------解决方案--------------------
以下的一些是我找出来的

强名称是一项在.net平台上的技术,它是来源于数字签名。数字签名的核心是非对称加密(RSA,EL Gamal)和Hash算法(MD5,SHA)。
强名称可以阻止DLL Hell的出现,开发者们能够以同样的名字发布他们的程序集。拥有强名称的程序集具备唯一的标识且储存在不同的空间。
强名称第二个重要的特点是可以使我们确定代码是否是原始的版本。

其实我一般就是要放入GAC的时候才会采用这个方法。


混淆
这个其实你下载一个Reflector 就可以反射出你用.net开发的东西。混淆器主要就是防止人家很容易的通过Reflector这类工具读出你的代码用的。

加壳
所谓加壳,就是先将程序代码加密,然后用特定的程序加载器,将代码解密后加载进内存,这样可以在防止代码的反编译,当然,有加壳工具,也有解壳工具,虽然不能100%防止crack,但仍然给代码增加一层有力的保护。