Dotnet_产品版权保护方案共28页文档
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ 第三方保护工具较好的厂商有:
Aiasted.SOFT
• 产品 :MaxtoCode,种类 :加密、混淆
PerEmptive Solutions
• 产品 :Dotfuscator Community,种类 :混淆
Remotesoft
• 产品 :Remotesoft Protect ,种类 :加密 • 产品 :Remotesoft Dotfuscator ,种类 :混淆
➢ 优点:
绝对无法利用Dotnet反编工具进行反编译 运行效率高 不可被非法修改 也不可以用Win32的反汇编工具进行反汇编
➢ 缺点:
只有使用 C++/CLI 结束 VC++.NET Managed 才能实 现
实现难度高,失去Dotnet优势
3.3 第三方保护工具
Aiasted.SOFT
【 3.3.1 混淆原理】
Aiasted.SOFT
➢ 流程混淆的示意图
(我们为了方便了解,使用的是C#语言,实际上,流程混淆是基于 MSIL上进行的)
源程序集
I = 1; J = 2; return I;
目标程序集
goto G1; G2:
J = 2; goto G3; G1:
I = 1; goto G2; G3: return I;
➢ 我们最关心的知识产权 ➢ 源代码泄漏,被竞争对手拿去和你竞争 ➢ 自己产品的注册机满天飞 ➢ 被别人植入恶意程序,后果得由作者或开
发商承担
Aiasted.SOΒιβλιοθήκη BaiduT
三、保护方案分类
我把Dotnet的保护分为三大类:
1.由Microsoft提供的非第三方保护方案 2.编程技巧保护方案 3.第三方保护工具
Aiasted.SOFT
【 3.3.1 混淆】
Aiasted.SOFT
➢ 功能:
字符串加密
将程序集中所存在的字符串进行加密,防止字符串 信息泄漏
名称混淆
将程序集中的某些 Class Name 或 Method Name 更改成一个无意义的字符串
流程混淆
给程序中增加某些形式的跳转以破坏原有可读的流 程但不改变执行流程
Aiasted.SOFT
3.1 Microsoft 提供的非第三方保护方案
➢ 强名称 使用命令:Sn.exe
➢ 编译为本机代码 使用命令:Negn.exe
【3.1.1强名称】
Aiasted.SOFT
➢ 强名称是 Microsoft 提供的保护机制。
➢ 它需要使用 Sn.exe 这个命令。
➢ 强名称的作用就是防止程序集被非法修改, 当对程序集修改后,必须重新用您的私钥 再对程序集签名,这也是如果含有强名称 的程序集在混淆或加密后必须要重新签名 的原因。
➢ 人为手工混淆
Aiasted.SOFT
➢ 隐藏程序集
➢ 将程序集中的相关Method(方法)编译成 Unmanaged(非托管代码)
【3.2.1 人为手工混淆 】
Aiasted.SOFT
➢ 优点:
混淆顾名思意,就是混乱,不明确的意思。MetaData 中都有一个RID,程序集运行时就已经和名称没什么关 系了,都使用RID来调用的,所以可以将名称省去。
主程序集
运行中的 主程序集
Aiasted.SOFT 解码
主程序集资源
被隐藏的程序集
【3.2.2 隐藏程序集】
Aiasted.SOFT
➢ 缺点:
耐心分析,因为加密的过程源代码不能被保护 您可以通过分析入口代码得到核心程序集 对于某些具备条件的人,无须费时即可破解
Aiasted.SOFT
【3.2.3将Method编译成Unmanaged】
➢ 强名称并不能保护您的程序
【3.1.2编译为本机代码 】
Aiasted.SOFT
➢ 将程序集编译为本机代码,使用 Microsoft 提供的命令 Ngen.exe 即可以将MSIL编译 为本机代码运行
➢ 运行速度加快,跳过JIT的解释映象
➢ 但它不能称为一个保护方案,它是一个误 区?
3.2.编程技巧保护方案
议程
➢ 1.简介DOTNET 编译原理 ➢ 2.中间语言的缺点 ➢ 3.保护方案分类
Aiasted.SOFT
Aiasted.SOFT
一、简介DOTNET 编译原理
C#、VB.NET、MORE… MSIL
Machine Code
编译时由程序连接 运行时由JIT映象
Aiasted.SOFT
二、中间语言的缺点
示意图 执行入口
Code 1 Code 2 Code 3
Code 2 Code 1 Code 3
Aiasted.SOFT
【 3.3.1 流程反混淆演示】
➢ 演示程序 XenoCodeTest.exe
使用 XenoCode 进行流程混淆 使用 Deflow 进行反流程混淆
Aiasted.SOFT
什么叫人为混淆呢,就是人为的制造混淆。
手工的折分类,折分方法,打乱一个整体的序顺,增 加无用的代码,增加无用的跳转等等
➢ 缺点:
耐心的分析就是解决方案。建议使用反编译工具: Reflector 它具有反向逆推及对象连接的功能。
【3.2.2 隐藏程序集】
➢ 优点
使程序集不可见,但又可被调用 著名的 Reflector 就是使用的这种方案 不会在物理磁盘上留下痕迹
【 3.3.1 混淆】
Aiasted.SOFT
➢ 字符串加密是一个有效的功能,可以有效的防止
程序中的字符串信息泄漏,可惜的是,解密的代 码明文的呈现在攻击者面前。
➢ 名称混淆也是一个不错的功能,但它不能阻止信 息泄漏,因为他只是个碍眼法。
➢ 流程混淆曾被当成救世主,它好象可以保护一切
信息,但实际上它也只是一个鸡助下面我们详细 分析一下流程混淆的行为。
XenoCode
• 产品 :XenoCode ,种类:混淆
3.3 第三方保护工具
➢ 混淆工具
Dotfuscator Community Remotesoft Dotfuscator XenoCode 2019
➢ 打包工具
Thinstall
➢ 加密工具
MaxtoCode Remotesoft Protect
【 3.3.1 流程反混淆原理】
➢ 我们把他的跳转去掉,并把程序块还原置原 来的位置,那么您就得到了源来的程序,可以 进行反编译的程序.
➢ 如果您也想开发反混淆工具,很简单,您必须 具备
字符串操作知识 混淆原理
【 3.3.1 混淆优缺点】