.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 a.exe mykey.snk //使用mykey.snk密钥对a.exe重新签名
延迟签名(重新签名以前)程序不能运行的,如在.net cf会报异常
团队开发中不能每个人都知道私钥,一般的做法是创建一个包含公钥部分的.snk文件。
代码如下:
sn - p mykey.snk publicKey.snk
publicKey.snk给开发人员使用,开发完发布时用mykey.snk重新签名。
相关推荐
-
Asp.Net类型转换类(通用类)代码分享
废话不多说了,直接给大家贴代码了,具体代码如下所述: /// <summary> /// 类型转换类 /// 处理数据库获取字段为空的情况 /// </summary> public static class DBConvert { #region------------------ToInt32类型转换------------------ /// <summary> /// 读取数据库中字符串并转换成Int32 /// 为空时返回0 /// </summary&
-
asp.net 数字签名实例代码
A给B发送信息,A会将信息用A的密码进行加密,然后将加密后的字符串和原文一起发给B,然后B用B的密码进行解密,然后判断解密后的字符串和A发过来的原文比对是否一致,关键问题在于, A和密码和B的密码不一样,这个才是数字签名的精华,A的密码就是私钥,B的密码就是公钥 具体步骤: 生成一个私钥和公钥,A就用私钥进行加密,因为A的私钥只有A自己有,所以加密后的字符串就是A的签名字符串,然后A将这个签名的字符串和原文发给B, B获取加密的字符串用公钥进行解密,然后判断解密后的字符串和原文是否一致,一致说明
-
.Net下的签名与混淆图文分析
签名 即强命名程序集,可以确保你的程序集唯一,而不被篡改.冒用等:即使相同名字的程序集如果签名也会不同. 签名前后程序集结构对比 假设程序集名子叫"WindowsApplication1",签名前后程序集信息对比 复制代码 代码如下: WindowsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullWindowsApplication1, Version=1.0.0.0, Culture=neutral
-
Windows环境下的MYSQL5.7配置文件定位图文分析
1.MYSQL安装目录 复制代码 代码如下: select @@basedir; 2.MYSQL数据文件目录 复制代码 代码如下: select @@datadir; 3.相应地,配置文件在数据文件上一级目录中 4.停止MYSQL服务 复制代码 代码如下: net stop 本机mysql服务名 5.启动MYSQL服务 复制代码 代码如下: net start 本机mysql服务名 6.配置参数max_allowed_packet 客户端/服务器之间通信的缓存区的最大大小,默认是4M 7.配置参
-
Java图文分析之继承内存布局
目录 一.初步了解继承的内存布局 (1) 继承内存布局初探 (2) Object 类 (3) 同名的成员变量 二.更复杂的继承的内存布局 一.初步了解继承的内存布局 (1) 继承内存布局初探 看下面拥有继承关系的代码,并画出内存布局图: public class Person { public int age; public void smile() { System.out.println("Person_smile()_age_" + age); } } class Student
-
win10环境下python3.5安装步骤图文教程
点我去Python官网下载 往下翻几页就能看到各种版本的Python,当前最新的是Python3.6,也没多大区别,我选择的是3.5.2 64位的,点击download 根据自己的电脑配置,我选择的是64位的 一路默认下去吧! 安装成功!下面打开命令提示符,输入python,回车如下图一样就安装成功啦! 以上所述是小编给大家介绍的win10环境下python3.5安装步骤图文教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!
-
ubuntu16.04下vim安装失败的原因分析及解决方案
先给大家说下问题描述? 重装了ubuntu系统,安装vim出现了以下问题: sudo apt-get install vim 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装.如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的.该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出. 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: vim :
-
windows下的WAMP环境搭建图文教程(推荐)
本篇文章主要是讲一下我自己安装wamp环境的一些步骤和见解,前方多图预警,慎入!!!!! PHP运行环境 : Linux下的三种安装方式:源码包安装.rpm包安装.集成环境安装(lnmp) windows安装的两种方式:单个下载安装.集成环境安装(AppServ,phpstudy,wamp) 在Windows系统上安装PHP开发环境: 所需软件分别独立安装: 安装前准备 安装Apache 安装MySQL 安装PHP 安装phpMyA 软件名称 下载地址 Apache下载 http://httpd
-
ubuntu16.04.1下 mysql安装和卸载图文教程
删除 MySQL sudo apt-get autoremove --purge mysql-server-* sudo apt-get remove mysql-server sudo apt-get autoremove mysql-server sudo apt-get remove mysql-common 清理残留数据 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 安装mysql 安装服务: 安装客户端: 安装完成后,M
-
Windows10下安装Docker的步骤图文教程
本文主要是记录吾本人在Windows10下安装Docker的过程,当然这些步骤也是在网上搜索查阅资料得知而来的!具体步骤如下: 一.启用Hyper-V 打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图: 点击确定后,启用完毕会提示重启系统,我们可以稍后再重启. 二.安装Docker Docker下载地址为:https://store.docker.com/editions/community/docker-ce-desktop-windo
-
Windows 7下Python Web环境搭建图文教程
最近想尝试一下在IBM Bluemix上使用Python语言创建Web应用程序,所以需要在本地搭建Python Web的开发测试环境. 关于Python的版本 进入Python的网站,鼠标移到导航条上的下载,我们会发现提供两下主版本的下载链接! 这两个之间存在什么差别呢? 个人理解,2.7.x的版本为更加稳定的版本,而3.x的版本则是比较前卫的版本,包含了很多新功能新特性之类的: 但如果想要用Python开发一个新项目,那么该如何选择Python版本呢?大部分Python库都同时支持Python
-
windows10下python3.5 pip3安装图文教程
最近Google官方的开发者博客中宣布新的版本Tensorflow(0.12)将增加对Windows的支持,想试着windows10下学习tensorflow,之前已经安装anaconda2(python2.7),怕安装python3.5会冲突,但还是想试一下,最终成功. 下载地址:官网地址 这是我下载的当前 python 3.x 最新版本的安装包 安装python 3.x 此处选择自定义安装,因为要修改默认安装位置.另外这里勾选了 "Add Python 3.5 to PATH" 选
随机推荐
- 用AngularJS的指令实现tabs切换效果
- 详解在vue-cli中使用路由
- Linux上安装搭建Nginx服务器的详细步骤
- JavaScript中定义函数的三种方法
- Android自定义控件实现UC浏览器语音搜索效果
- js和jquery设置disabled属性为true使按钮失效
- mysql全文搜索 sql命令的写法
- mysql 一次更新(update)多条记录的思路
- Jquery中增加参数与Json转换代码
- JS动态遍历json中所有键值对的方法(不知道属性名的情况)
- javascript下function声明一些小结
- Android 实现手机拨打电话的功能
- 如何在win 2003中得到登陆密码
- Android开发入门之Appwidget用法分析
- c++实现strcat字符串连接库函数的方法详解
- 浅谈android性能优化之启动过程(冷启动和热启动)
- C语言 strcpy和memcpy区别详细介绍
- Ubuntu18.04 安装mysql8.0.11的图文教程
- Redis和Lua使用过程中遇到的小问题
- python实现dijkstra最短路由算法