zoukankan      html  css  js  c++  java
  • C# 强命名程序集,防止dll被修改,混淆下发布

    未能加载文件或程序集“Jonckers.Service.RedisCacheEngineExtend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。需要强名称程序集。 (异常来自 HRESULT:0x80131044)

    强名称签名的方法:
    强签名:

      1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll。

      2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名的dll。

      3. 强签名无法保护源代码,强签名的dll是可以被反编译的。

      4. 强签名的dll可以防止第三方恶意篡改。

    管理员方式运行

    生成snk

    Bash
    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:WINDOWSMicrosoft.NETFrameworkv2.0.50727ilasm.exe

      C:Program FilesMicrosoft Visual Studio 8SDKv2.0Binildasm.exe

      C:Program FilesMicrosoft Visual Studio 8SDKv2.0Binsn.exe

  • 相关阅读:
    [Silverlight]常见问题
    [C#]有趣的VS扩展DebuggerVisualizer
    [EF5.0CODE FIRST]多对一及自关联映射的处理
    自定义控件传值
    关于.Net中类型转换ToInt32
    SQL版整数转IP
    SQL2008 Merge关键字用法与简例
    SQL语句,同时返回结果集,输出参数的值及return值
    多线程与异步操作实现的探讨
    SQL Prompt4 破解版
  • 原文地址:https://www.cnblogs.com/code1992/p/11600019.html
Copyright © 2011-2022 走看看