欢迎来到天天文库
浏览记录
ID:20565830
大小:181.50 KB
页数:27页
时间:2018-10-13
《dotnet_产品版权保护方案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Dotnet产品版权保护方案Dotnet源代码保护加密技术讲师:康世杰(Jason.NET)Copyright(C)Aiasted.SOFT.Allrightsreserved.议程1.简介DOTNET编译原理2.中间语言的缺点3.保护方案分类一、简介DOTNET编译原理C#、VB.NET、MORE…MSILMachineCode编译时由程序连接运行时由JIT映象二、中间语言的缺点我们最关心的知识产权源代码泄漏,被竞争对手拿去和你竞争自己产品的注册机满天飞被别人植入恶意程序,后果得由作者或开发商承担三、保护方案分类我把Dotn
2、et的保护分为三大类:1.由Microsoft提供的非第三方保护方案2.编程技巧保护方案3.第三方保护工具3.1Microsoft提供的非第三方保护方案强名称使用命令:Sn.exe编译为本机代码使用命令:Negn.exe【3.1.1强名称】强名称是Microsoft提供的保护机制。它需要使用Sn.exe这个命令。强名称的作用就是防止程序集被非法修改,当对程序集修改后,必须重新用您的私钥再对程序集签名,这也是如果含有强名称的程序集在混淆或加密后必须要重新签名的原因。强名称并不能保护您的程序将程序集编译为本机代码,使用Micros
3、oft提供的命令Ngen.exe即可以将MSIL编译为本机代码运行运行速度加快,跳过JIT的解释映象但它不能称为一个保护方案,它是一个误区?【3.1.2编译为本机代码】3.2.编程技巧保护方案人为手工混淆隐藏程序集将程序集中的相关Method(方法)编译成Unmanaged(非托管代码)【3.2.1人为手工混淆】优点:混淆顾名思意,就是混乱,不明确的意思。MetaData中都有一个RID,程序集运行时就已经和名称没什么关系了,都使用RID来调用的,所以可以将名称省去。什么叫人为混淆呢,就是人为的制造混淆。手工的折分类,折分方法
4、,打乱一个整体的序顺,增加无用的代码,增加无用的跳转等等缺点:耐心的分析就是解决方案。建议使用反编译工具:Reflector它具有反向逆推及对象连接的功能。优点使程序集不可见,但又可被调用著名的Reflector就是使用的这种方案不会在物理磁盘上留下痕迹【3.2.2隐藏程序集】主程序集主程序集资源被隐藏的程序集运行中的主程序集解码缺点:耐心分析,因为加密的过程源代码不能被保护您可以通过分析入口代码得到核心程序集对于某些具备条件的人,无须费时即可破解【3.2.2隐藏程序集】【3.2.3将Method编译成Unmanaged】优点
5、:绝对无法利用Dotnet反编工具进行反编译运行效率高不可被非法修改也不可以用Win32的反汇编工具进行反汇编缺点:只有使用C++/CLI结束VC++.NETManaged才能实现实现难度高,失去Dotnet优势3.3第三方保护工具第三方保护工具较好的厂商有:Aiasted.SOFT产品:MaxtoCode,种类:加密、混淆PerEmptiveSolutions产品:DotfuscatorCommunity,种类:混淆Remotesoft产品:RemotesoftProtect,种类:加密产品:RemotesoftDotfus
6、cator,种类:混淆XenoCode产品:XenoCode,种类:混淆3.3第三方保护工具混淆工具DotfuscatorCommunityRemotesoftDotfuscatorXenoCode2005打包工具Thinstall加密工具MaxtoCodeRemotesoftProtect【3.3.1混淆】功能:字符串加密将程序集中所存在的字符串进行加密,防止字符串信息泄漏名称混淆将程序集中的某些ClassName或MethodName更改成一个无意义的字符串流程混淆给程序中增加某些形式的跳转以破坏原有可读的流程但不改变执行
7、流程字符串加密是一个有效的功能,可以有效的防止程序中的字符串信息泄漏,可惜的是,解密的代码明文的呈现在攻击者面前。名称混淆也是一个不错的功能,但它不能阻止信息泄漏,因为他只是个碍眼法。流程混淆曾被当成救世主,它好象可以保护一切信息,但实际上它也只是一个鸡助下面我们详细分析一下流程混淆的行为。【3.3.1混淆】源程序集流程混淆的示意图(我们为了方便了解,使用的是C#语言,实际上,流程混淆是基于MSIL上进行的)【3.3.1混淆原理】I=1;J=2;returnI;目标程序集gotoG1;G2:J=2;gotoG3;G1:I=1;
8、gotoG2;G3:returnI;示意图Code1Code2Code3Code2Code1Code3执行入口演示程序XenoCodeTest.exe使用XenoCode进行流程混淆使用Deflow进行反流程混淆【3.3.1流程反混淆演示】我们把他的跳转去掉,并把程序块还原置
此文档下载收益归作者所有