第一个作用是区分发行者
比如
你有一个 a.dll,version=1.0.0.1,culture=de-DE
我也有一个 a.dll,version=1.0.0.1,culture=de-DE
那这两个程序集放在一起不就冲突了吗
这时候,如果我们分别对各自的程序集加上强名,那么.NET就能区分这两个程序集
第二个作用是防止程序集被篡改
不是说你加了强名,别人就不能改你的程序集。而是如果被改了,就过不了调用方的强名验证,调用方就不认这个被非法修改了的程序集。
比如有一个程序集b.dll,很多程序和其他程序集都引用了它。现在有些人处于某些目的,把这个b.dll篡改了,加上一些后门之类的东西,然后在网络上传播。如果是普通程序集,那他的目的就能够达到。但是如果程序集有强名(并且调用方都是完全限定调用的),那所有用到b.dll的代码都不认这个被非法修改过的版本。
其他一些作用是CLR在处理程序集引用时用到的。比如有强名的程序集在解析时会进行版本检查,没有强名的程序集就不进行这个检查。
有强名的程序集可以配置在任何位置,没有强名的程序集只能配置在应用程序的私有目录下
具体的去MSDN上看吧,很多,很杂又很散
在 VB.NET 中,防止 dnspy 通过反编译来反查代码的方法主要有以下几个方面:1. 使用混淆工具:可以使用混淆工具对代码进行加密和混淆,增加反编译难度。比如,可以使用 ConfuserEx 等工具进行混淆。
2. 代码优化:通过合理的编码规范和结构优化,可以使代码更加难以理解和破解。例如,可以将相关功能封装成DLL或者模块,避免直接在主程序中公开代码等。
3. 加密:对于关键代码可以采用加密措施,使其在运行时才被解密并执行,从而防止篡改和破解。比如,可以使用加密算法来保护数据库密码等敏感信息。
4. 程序签名:通过给程序添加数字签名,可以识别未经授权的修改和破解行为。在发布应用程序之前,需要对应用程序进行数字签名,以保证程序的完整性和安全性。
总之,在编写 VB.NET 程序时,需要采取多种安全措施,从多个方面增强程序的安全性和可靠性,以防止 dnspy 等工具进行反编译和破解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)