• 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

  • 相关阅读:
    [转]Native进程的运行过程
    android ARM 汇编学习 —— hello world
    android ARM 汇编学习—— 在 android 设备上编译c/cpp代码并用objdump/readelf等工具分析
    Linux buffer/cache异同
    分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
    kafka对比RocketMQ(转)
    Jmeter测试webocket协议
    Linux atop监控工具部署
    MySql计算两个日期的时间差函数
    Python selenium —— 一定要会用selenium的等待,三种等待方式解读(转)
  • 原文地址:https://www.cnblogs.com/code1992/p/11600019.html
Copyright © 2020-2023  润新知