没有合适的资源?快使用搜索试试~ 我知道了~
[C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护).doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
4星 · 超过85%的资源 3 下载量 121 浏览量
2021-01-27
16:46:02
上传
评论 1
收藏 474KB DOC 举报
温馨提示
试读
13页
[C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护).doc
资源推荐
资源详情
资源评论
[C#防止反编译].NET 产品版权保护方案 (.NET 源
码加密保护)
2011 年 03 月 24 日 21:06:00Dartagnan阅读数:48801
说 明:你希望自己用
.net
辛辛苦苦做出来的软件被人轻易破解吗?你希望自己
花了大量人力物力用
.net
开发出来的产品被竞争对手轻易获取核心代码吗?这
是 一篇比较详尽地介绍如何保护自己的
.net
源代码的文章,如混淆、加密和强
名称等,出于保护原作者的角度,所以本人没有掐头去尾作为自己个人的文章,
正因 为是全文转载,所以并不代表本人完全赞同作者的全部观点,也不代表本
人本人提作者提到的软件做广告,这一点请大家注意,不要认为我为别人做广
告而骂我,其 实我根本不认识作者。
一
.前言
大家好,我是康世杰,大家可以叫我 Jason。
我和大家一样,都是搞技术出身,也未当过讲师,所以口材有限,如果讲得不
好之处,还希望大家多多海含,谢谢。
今天是我们第一次见面,能认识你们,真的很高兴。
下面我们不要耽误大家的宝贵时间,让我们马上开始上课吧。
DotNet是
ms 开发并推广的企业解决方案,也是 Ms 以后几年的核心发展战
略之一,所以我觉得
DotNet是有前途的,他有一个优秀的概念,还有一个强
大的财团,想失败都很难啊。DotNet缺乏的是大型企业高层管理人员对它的
信心,这还需要时间和事例去证明,世界上待开发的大案件还很多,Java和
D
otNet最终谁的市场比例多,现在还说不清楚。
二
.简介 DOTNET编译原理
相信大家都使用过
Dotnet,可能还有不少高手。不过我还要讲讲 Dotnet 的
基础知识,Dotnet 的编译原理。
Dotnet 是一种建立在虚拟机上执行的语言,它直接生成
MSIL的中间语言,再
由 DotNet 编译器
JIT解释映象为本机代码并交付 CPU 执行。它和 Java 是一
种机制的语言。这种语言的优点就是您不需要去考虑您的程序在那里运行,您
只需要把功能做出来,虚拟机会在任何地方实现您的功能。这是一个很好的趋
势和想法,但虚拟机的中间语言由于带了大量的“元数据”信息,所以也极容易
被反编译。
MSIL的代码事实上和
C#或
VB没有多大的区别,只要您记住 20 来个指令,
您应该可以很容易的读懂它。
保护代码和开源并不冲突,需要保护的一定有自己的理由,所以今天我也不是
来反对开源的。。呵呵
三
.中间语言的缺点
中间语言如此容易被反编译,有许多可怕之处。
1.我们最关心的知识产权
辛苦研究出来的算法,多少个不眠夜研究出来的成果。这本来是你赚钱的法宝,
可是被公开了,知识产权没有了,那个时候恨谁啊。
2.源代码泄漏,被竞争对手拿去和你竞争(这种事很多)
就我知道的都有几起,不过不方便说出来。
他们从客户那里想办法 copy 回一份别的公司的产品,然后反编译后,改改图
片,图片以及版权信息和注册信息,就拿出去卖了。
正规的公司一套卖二万,它们一套才 8 千。功能基本上一样,你说你是客户,
你买谁的?
3.自己产品的注册机满天飞
做个共享软件吧,赚点钱改善一下生活吧,产品刚上市,还没几天注册机每个
网站都有。影响了销售还影响心情,以后不做产品了,还是做服务靠得住,至
少盗版不了啊,呵呵,不过做服务,还没那么多资金,真是做什么都难啊。
4.被别人植入恶意程序,后果得由作者或开发商承担
以上说的都只是被别人占便宜的事情,还好,只是让能占占便宜,算了,亏也
亏不了多少。可是,我再讲一个,那可就不是被人占便宜那么简单了。
比方说:贵公司出了套产品,放在网上给人下载试用,定好版本为 1.0,某个
恶意的公司不怀好意,把产品下载下来,用万恶的 Ildasm反编译一下,然后
在里面加入一段按条件触发的命令,命令的内容是 format c:orformat d:.
然后再用万恶的 ilasm编译一下,用贵公司的名义打个一模一样的包,升级为
1.2 试用版,然后放到 ftp或
shareware site上供人试用下载。试想一下,
不久您就会接到用户的投诉,甚至是起诉。
再比方说:要离开公司的员工,对公司的种种形为不满,在离职交接以后,把
公司 Release 好的项目的某个 dll 改一改,必定造成这个项目的重大损失。当
然,我可不是在教各位用这种方法对待自己不满的公司。我只是告诉各位,
Dotnet 的程序集,不保护是不行的。
四
.保护方案分类
下面,我开始介绍一下.NET 的各种保护方案。
我把 Dotnet 的保护分为三大类
1. 由 m$提供的非第三方保护方案
a)强名称
强名称是 MS 提供的保护机制。
它需要使用
sn这个命令。
强名称是什么意思呢?在这里稍作解释。强名称的作用就是防止程序集被非法
修改,当对程序集修改后,必须重新用您的私钥再对程序集加一次强名称,这
也是如果含有强名称的程序集在混淆或加密后必须要重新加强名称的原因。
Sn/ ?可以看到它的使用方法,如果你安装的
Framework 是中文的,那么参
数的解释也是中文的,我就不多讲了。
那么强名称有用吗?网上轻松破解强名称的方法很多,Ildasm 反编译加过强名
称的程序集后,在 IL 文件中将强名称的相关信息去掉,再利用 Ilasm 编译,就
可以解除强名称的限制了。这个我已经过测试过,您的强名称的 PublcKey 不
管是加在程序集中,还是加在 Class 中,都可以被去掉,所以强名称不是一个
完善的保护方式。不过在这里要说一下,如果有一个好的方案能和强名称一起
使用,那么将建立一个非常好的机制,防修改,防滥用。
说到滥用,这是强名称的一个特殊用途,它可以使您的 dll 不被第三方调用,如
果您的 dll 能保护自己的话。
关于强命称讲到这里,他的使用方式有必要的情况下,我们以后再深入的讲解。
b)编译 MSIL 为本机代码(误区?)
关于这一点,我经常能在 MS 上的社区看到有 MVP 这样面对问题:
问:C#写的程序能编译成本机代码吗?
答:可以,使用
Ngen.exe即可以
MSIL代码编译为本机代码。
MVP 这样回答错了吗?其实,严格的说,MVP 的回答是没错的,Ngen.exe
的确是可以将
MSIL编译为本机代码,并可以使 JIT 不需要进行再次编译
MSIL。这样能加快程序的执行效率。
但用户这样的问题其实,并不是对执行效率不满意,而是对中间语言不满意,
可惜
Ngen并不能解决用户的问题。
让我们来浅浅的分析一下
Ngen 的工作吧。
Ngen 是 MS 提供的本机映象生成器,它可以将中间语言程序集编译为本机代
码存放在缓存中。这里请大家注意,是存放在缓存中,Dotnet 在内存中建立
了一个缓存,这个缓存中存放了许多常用的程序集编译后的本机代码,它们是
常驻的,由此来加快 Dotnet 的执行速度。
所谓一个本机代码,因为本机映射时,会映射出一些
Framework里需要的
Method,编译为汇编就是 Call 0x0200000 这样的样子,而这些东西必须是
事件编译好的。那么理论上说Ngen必须要在当前执行的机器上运行,而直接
编译成本机代码的程序 copy 到另一个地方不一定可以用,而且我一直没有找
到能将缓存中的本机代码
copy出来的方法。
讲到这里,不知道大家明白我的意思没有,不管如何
Ngen.exe只是一个提速
的工具,因为要执行编译为本机代码必须还是要原程序集,而原程序集中存在
MSIL,所以让程序无法脱离被反编译的目地。
大家回家,如果有空,可以做做试验。
Ngen/show就可以看到缓存中所有的已编译好的程序集,所以 Dotnet 并不
慢。
Ngen<assembly path or display name>可以把指定程序集映象为本机
代码。
Ngen/?可以看到其它参数
以上是 ms 提供的工具,下在讲讲,自己在编程的过程中,如何使用技巧来防
止破解或反编译。
1. 编程技巧保护方案
在这里,我会给大家介绍两种三种方式
1.人为混淆
在这里,我就要先简单的讲讲什么叫做混淆
混淆顾名思意,就是混乱,不明确的意思。MetaData 中都有一个 Rid,程序
集运行时就已经和名称没什么关系了,都使用 Rid 来调用的,所以可以将名称
省去。
什么叫人为混淆呢,就是人为的制造混淆。
曾经看过一个程序集,手工的将一个 Method 折成几十个或上百个,从而达到
让你看不懂的目的。不过可惜的说一句:现在的 Dotnet 程序集的分析工具都
剩余12页未读,继续阅读
资源评论
- qq_248821872023-01-12坑到死 #毫无价值 # 引导二次消费 #标题与内容不符
- Jhzhao2021092021-11-05用户下载后在一定时间内未进行评价,系统默认好评。
- fly_csdn12022-07-30资源有很好的参考价值,总算找到了自己需要的资源啦。
大龙软件研发
- 粉丝: 98
- 资源: 214
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 《软件测试训练营》学习笔记-举例注册测试用例
- 机器学习预测.rar机器学习预测.rar机器学习预测.rar
- VIS 110Nm lib ip
- 848694479200715布谷鸟配音_1.10.8.0.apk
- 基于改进粒子群算法微电网日前优化(matlab程序)
- Energy Hub Integration: Optimizing Electricity and Heat Market P
- 基于C51单片机蓝牙控制小车proteus仿真程序源码+相关技术文档资料.zip
- Integrated-Energy-Systems-with-CAES-(注释完全,可直接运行)
- PDF为英语文本绘制热区(DEMO)
- Python一种新的需求响应机制DR-VCG研究(注释完全,可直接运行)(文档加Matlab源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功