.Net下的签名与混淆
任何时候,软件安全与版权保护都是很重要的,特别是企业级开发或一些特殊应用方面。对.NET平台下的开发如何做到安全,本文主要讨论签名与混淆和原理与思路。
签名
即强命名程序集,可以确保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果签名也会不同。
签名前后程序集结构对比,假设程序集名子叫"WindowsApplication1",签名前后程序集信息对比:
WindowsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
WindowsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=85377e8b68475fc8
如果项目中引用了一个已签名的程序集a.dll,而遭到一伪造的a.dll来偷梁换柱,此时主程序调用时就会产生异常:
未签名的主程序可以引用已签名或未签名的程序集;而已签名的主程序不能引用未签名的程序集。
对程序集强签名后就有了唯一标识,就可以在程序中得知程序集的来路了,可以获取当前执行的程序集信息或调用程序集信息,见:
System.Reflection.Assembly.GetExecutingAssembly()
System.Reflection.Assembly.GetCallingAssembly()
如何生成密钥及签名,可使用.net sdk里的sn.exe命令行工具;或者visual studio里的项目--属性--签名
密钥如果有密码保护,则生成pfx文件,没有密码生成snk文件,pfx比snk文件较大些;
混淆
对编译生成的MSIL中间代码进行模糊处理,随着混淆的加重,人脑进行多方面智力思维的能力逐渐降低,保护源代码以提高反编译的难度。这种模糊处理并不改变程序执行的逻辑。
混淆的工具有很多:如DotFuscator、Obfuscator.NET、 XeonCode、 MaxtoCode
两者兼并
既对程序集签名又做混淆处理也是可以的,而强命名后的程序集如果做混淆会产生异常,程序也无法正常执行。正确的做法的: 延迟签名 -- 开发完成 -- 混淆 -- 重新签名 (即先延迟签名,混淆后再签名)
混淆后再签名,可以使用sn里的R选项完成
sn-R a.exe mykey.snk //使用mykey.snk密钥对a.exe重新签名
延迟签名(重新签名以前)程序不能运行的,如在.net cf会报异常
团队开发中不能每个人都知道私钥,一般的做法是创建一个包含公钥部分的.snk文件。
sn - p mykey.snk publicKey.snk
publicKey.snk给开发人员使用,开发完发布时用mykey.snk重新签名。
相关推荐
.NET强签名去除工具
史上最强的强签名去除工具,不仅可以去除本身的强签名,对引用的强签名程序集也可以去除强签名限制,独一无二的破解神器!
C#.NET Framework RSA 私钥签名 公钥验签(验证签名)
RSA 私钥长度1024 ,RSA2 私钥长度2048 /// RSA 私钥长度1024 ,RSA2 私钥长度2048/// 公钥证书文本内容/// pcsk1 私钥的文本内容
SmartAssembly.Professional.v6.7.2.44.Cracked
专业的混淆器,非常好的工具,一直在使用,欢迎大家分享
CLR Via C# 3rd 阅读摘要 -- Chapter 3 - Shared Assemblies and Strongly Named Assemblies
Two Kinds of Assemblies, Two Kinds of Deployment1. 弱名称程序集和强名称程序集;2. 两种类型程序集的部署方式:Privately、Globally。Giving an Assembly a Strong Name1. 强名称程序集的额外标识信息:Public Key;2. sn.exe;3. csc.exe /keyfi...
.Net下的签名与混淆图文分析
签名 即强命名程序集,可以确保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果签名也会不同。 签名前后程序集结构对比 假设程序集名子叫”WindowsApplication1″,签名前后程序集信息对比 代码如下:WindowsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullWindowsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=85377e8b68475fc8 如果项目中引用了一个已签名的程序集a.dll,而遭
深度学习——VGG16模型详解
1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。 介绍结构图: conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为
如何对.NET应用程序进行数字签名
我们可以为我们的程序进行数字签名,这样就可以证明该程序的作者是可信的.首先为了签名程序,我们需要先创建一个证书.证书是由证书颁发机构(CA)颁发的,CA 是受信任的第三方机构,它可以为我们颁发证书.当然我们也可以自己创建证书.接下来简单介绍下如何利用 OpenSSL 工具创建证书.创建证书下载 openssl 安装包并安装,推荐下载最新 64 位版本.打开命令行,输入 openssl,如果提示 O...
Docker网络教程(四)macvlan 网络教程
在这种网络下,Docker 宿主机在它的IP之上,允许接受多个 MAC 地址的请求,然后再将这些请求路由至对应的容器里。流通,Docker 会用它的 MAC 地址,把流量路由进你的容器里。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。),Docker使用其MAC地址将流量路由到你的容器。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。你需要 3.9 或者更高版本的 Linux 内核,4.0 以及以上的版本是更好的。如果你的设备叫别的名字,用对应的名字代替。
.NET强签名及混淆解决方案
.NET强签名及混淆解决方案 前提是程序已经开发完成。 (一)强签名处理: 1)生成公钥/私钥对 sn -k ObarKeyPair.snk 2)提取出公钥并存放在public.snk中。public.snk的目的是为了便于分发;在ObarKeyPair.snk中的私钥是无法提取出来的 sn -p ObarKeyPair.snk public.snk 3)对第三方组件进行强
Notion卡顿救星:3分钟搞定DNS优化,手机电脑全平台加速指南
本文针对Notion访问慢和卡顿问题,提供了全平台DNS优化与Hosts文件修改的详细指南。通过更换优质DNS服务器或建立静态IP映射,可有效解决因网络延迟和域名解析导致的加载缓慢,实现手机与电脑端的快速加速,提升Notion使用流畅度。
【论文阅读】2021-(Pidinet)Pixel Difference Networks for Efficient Edge Detection
文章目录摘要1. Introduction 摘要 motivations: 基于CNN的边缘检测的高性能是通过一个大的预训练CNN主干来实现的,该主干占用大量内存和能量。传统边缘检测器(如Canny、Sobel和LBP)很少被研究。 contributions: 提出了一种简单、轻量级但有效的架构,称为像素差分网络(PiDiNet),用于有效的边缘检测。PiDiNet采用了新颖的像素差卷积,将传统的边缘检测算子集成到现代CNN中流行的卷积运算中,以增强任务性能。 experiments: 在BSDS500
.net程序 混淆、强签名、加密
大家都知道.net开发的软件,无论WebForm项目还是WinForm项目,发布的时候都是编译成dll或者exe文件。但是我们经常会无论是出于学习还是其他什么目的,想查看软件源代码和解除软件的某些限制。这时反编译技术就派上了用场。上面提到的reflector就是这样一个工具。他可以把dll或者exe等目标文件反编译成源代码。如果目标文件没有经过混淆、加密等处理,往往反编译得到的源代码跟软件编译前的...
Openclaw Onboarding向导全攻略——如何配置你的第一个AI助手
很多新手在成功运行 `openclaw --version` 后,面对黑底白字的终端就陷入了迷茫:“安装好了,然后呢?” 本篇我们就彻底解决这个问题,带你完整走完 `openclaw onboard` 交互式初始化配置向导的每一步,从“安装完成”到“真正能用”,只差这一个向导的距离。 本文为2026年3月最新版,适配OpenClaw v2026.2.x 稳定版,所有步骤均经过实测验证,可直接落地。
.Net下的签名与混淆(转)
.Net下的签名与混淆 任何时候,软件安全与版权保护都是很重要的,特别是企业级开发或一些特殊应用方面。对.NET平台下的开发如何做到安全,本文主要讨论签名与混淆和原理与思路。 签名 即强命名程序集,可以确保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果签名也会不同。 签名前后程序集结构对比 假设程序集名子叫"WindowsApplication1",签名前后程序集信息对比 Wi...
BES2810_best1702_best1702_ibrt_三者关系深度解析
一颗芯片的三个名字:BES2810、best1702 与 best1702_ibrt 关系深度解析
120、ISP 驱动架构解析:从 V4L2 请求到 ISP 硬件的配置下发流程
本文以实际案例解析ISP驱动架构的V4L2到硬件配置下发流程。作者通过一个因内存共享导致画面闪烁的bug案例,详细剖析了用户空间参数通过V4L2结构体传递、驱动层拆包与硬件寄存器映射、时序同步机制等关键环节。特别强调深拷贝、dirty flag增量更新、shadow register等实现要点,并给出多路并发隔离、寄存器写入失败等典型问题的排查方法。文章建议开发者深入理解参数到寄存器的转换过程,推荐通过debugfs实时监控寄存器状态,避免过度依赖自动调试工具。全文以实践为导向,对ISP驱动开发具有直接指导
对混淆后的.Net程序集进行数字签名
StrongName能够为Assembly进行数字签名,以确保该Assembly不会因被非法篡改而带来危害。做过StrongName数字签名的Assembly如果被修改都不能再被执行。哪怕只有一个bit的改动都无法通过校验。Dotfuscation 是一个随VS发布附带的混淆器产品。原理在于将已经编译完成的Assembly进行反编译,修改其中的标识符名称,使得反编译后结果无法被
SAP AI Core 高阶能力实战参考
文章摘要:本文探讨了在企业SAP架构中整合GenAI技术的工程化实践,重点分析了SAP AI Core的高阶能力应用。作者指出,企业级AI应用需解决多轮对话管理、Git同步工作流、提示词治理等核心问题,而非简单接入大模型API。技术方案展示了如何通过SAP AI Core的orchestration service管理对话历史,利用GitOps实现AI资产版本控制,并强调prompt template在审计合规中的治理价值。全文以SAP技术栈(ABAP/RAP/Fiori)为背景,阐释了AI能力与企业核心系
程序集的混淆及签名
一般地,用.NET编写的程序集在发布前,通常需要对代码进行混淆和强签名,下面简要介绍一下程序集的混淆和强签名的步骤及在实际开发中的实施。 1.创建一个公钥/私钥对 首先,需要创建一个公钥/私钥对。密钥如果有密码保护,则生成pfx文件,没有密码生成snk文件,pfx比snk文件较大些,在Visual Studio命令提示符下: Sn -k Certify.snk 该.s...
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
链接:.Net下的签名与混淆图文分析
http://www.jb51.net/article/17202.htm 转载于:https://www.cnblogs.com/wangpy/archive/2009/06/01/1493599.html
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
C#强签名作用详解与混淆加密强签名教程
恒盾C#混淆加密大师处理强签名程序集时,混淆会破坏原签名,导致引用加载失败或无法通过校验。软件内置强签名功能,可在混淆后使用相同.snk密钥重新签名,保留公钥标记与引用兼容,同时兼顾防护与GAC部署需求。需注意密钥保密及与原始密钥一致。
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
5335



被折叠的 条评论
为什么被折叠?



