C# 强命名程序集,防止dll被修改,混淆下发布
未能加载文件或程序集“Jonckers.Service.RedisCacheEngineExtend,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或它的某一个依赖项。需要强名称程序集。 (异常来自 HRESULT:0x80131044) 强名称签名的方法:
? ? ? ? 管理员方式运行 ? ? ? ? 生成snk
Bash
? ? 然后查看属性,找到签名 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:WINDOWSMicrosoft.NETFrameworkv2.0.50727ilasm.exe C:Program FilesMicrosoft Visual Studio 8SDKv2.0Binildasm.exe C:Program FilesMicrosoft Visual Studio 8SDKv2.0Binsn.exe (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |