C# 强命名程序集,防止dll被修改,混淆下发布
未能加载文件或程序集“Jonckers.Service.RedisCacheEngineExtend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。需要强名称程序集。 (异常来自 HRESULT:0x80131044)
强名称签名的方法:
强签名:
-
可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll。
-
强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名的dll。
-
强签名无法保护源代码,强签名的dll是可以被反编译的。
-
强签名的dll可以防止第三方恶意篡改。
管理员方式运行
生成snk
SN -k C:\qiny.snk
然后拷贝到程序集去
然后查看属性,找到签名 tab,选择那个snk文件
此时,该密钥对并未与项目的程序集建立关联,我们需要打开项目(Project)的AssemblyInfo.cs 文件。此文件具有一个程序集属性列表,默认情况下,在 Visual Studio .NET 中创建项目时将包括这些属性。在代码中修改名为“AssemblyKeyFile”的属性,如下所示:
[assembly:AssemblyKeyFile("ayui.snk")]
这样,编译该项目即生成强命名的程序集。
然后找个工具简单混淆下代码,就可以发布你的dll给别人用了,真的有人想破解你的,你也是没办法
在VS.NET 的命名行窗口下,输入如下的代码。
1 ,生成一个KeyFile
sn -k keyPair.snk
2, 得到程序集的MSIL
ildasm SomeAssembly.dll /out:SomeAssembly.il
3 ,为了避免冲突,把原来的DLL 文件改名
ren SomeAssembly.dll SomeAssembly.dll.orig
4 , 使用导出的MSIL 和刚创建的KeyFile 生成一个新的的DLL 文件。
ilasm SomeAssembly.il /dll /key= keyPair.snk
这些工具都在哪里?(如果直接在命令行下执行的话,可能需要将下面的路径加入到path里)
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe
相关文章
- C#编写媒体播放器--Microsoft的Directx提供的DirectShow组件,该组件的程序集QuartzTypeLib.dll.
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)3---- 动态加载Assembly应用程序
- vs2005 ,2008,2010中引入app.manifest(即c#程序在win7下以管理员权限运行方法)
- C#构造函数里的base和this的区别
- 《C#高级编程》学习笔记----c#内存管理--栈VS堆
- 编写高质量代码改善C#程序的157个建议[动态数组、循环遍历、对象集合初始化]
- 编写高质量代码改善C#程序的157个建议[10-12]
- 编写高质量代码改善C#程序的157个建议[正确操作字符串、使用默认转型方法、却别对待强制转换与as和is]
- 编写高质量代码改善C#程序的157个建议——导航开篇
- C#通过用户名与密码访问共享目录
- C# 使用BackgroundWorker实现WinForm异步
- c# 优化代码的一些规则——const 和 readonly[二]
- 机器学习笔记 c#调用python脚本文件进行模型推理
- C# WinForm程序的App.Config数据库连接配置文件
- C# 打开指定路径下文件
- C# 委托 事件 匿名方法
- C# WinForm程序的App.Config数据库连接配置文件
- 【目录】C#搭建足球赛事资料库与预测平台与彩票数据分析目录
- Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性 应该内置到语言里面
- 程序老鸟C#学习:3天学会全部基础--第一天
- C#基础——DateTime
- C# 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
- C#调用摄像头(AForge)实现扫描条码解析(Zxing)功能
- c# 自动更新程序
- C#生成二维码和条形码并实现打印的功能
- C# WinForm程序中,使用多线程,在关闭窗体时 怎么关闭窗体的所有线程,使程序退出。
- c# WinForm窗体编程中对窗体程序设置快捷键
- C# winform程序怎么打包成安装项目(图解)
- Visual Studio 2019 使用C语言创建动态链接库(Dll)并使用C语言和C#实现调用
- C#与C++之间类型的对应
- C#类和对象