您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Dotnet产品版权保护方案
Aiasted.SOFTAiasted.SOFTDotnet产品版权保护方案Dotnet源代码保护加密技术讲师:康世杰(Jason.NET)Copyright(C)Aiasted.SOFT.Allrightsreserved.Aiasted.SOFTAiasted.SOFT议程1.简介DOTNET编译原理2.中间语言的缺点3.保护方案分类Aiasted.SOFTAiasted.SOFT一、简介DOTNET编译原理C#、VB.NET、MORE…MSILMachineCode编译时由程序连接运行时由JIT映象Aiasted.SOFTAiasted.SOFT二、中间语言的缺点我们最关心的知识产权源代码泄漏,被竞争对手拿去和你竞争自己产品的注册机满天飞被别人植入恶意程序,后果得由作者或开发商承担Aiasted.SOFTAiasted.SOFT三、保护方案分类我把Dotnet的保护分为三大类:1.由Microsoft提供的非第三方保护方案2.编程技巧保护方案3.第三方保护工具Aiasted.SOFTAiasted.SOFT3.1Microsoft提供的非第三方保护方案强名称使用命令:Sn.exe编译为本机代码使用命令:Negn.exeAiasted.SOFTAiasted.SOFT【3.1.1强名称】强名称是Microsoft提供的保护机制。它需要使用Sn.exe这个命令。强名称的作用就是防止程序集被非法修改,当对程序集修改后,必须重新用您的私钥再对程序集签名,这也是如果含有强名称的程序集在混淆或加密后必须要重新签名的原因。强名称并不能保护您的程序Aiasted.SOFTAiasted.SOFT将程序集编译为本机代码,使用Microsoft提供的命令Ngen.exe即可以将MSIL编译为本机代码运行运行速度加快,跳过JIT的解释映象但它不能称为一个保护方案,它是一个误区?【3.1.2编译为本机代码】Aiasted.SOFTAiasted.SOFT3.2.编程技巧保护方案人为手工混淆隐藏程序集将程序集中的相关Method(方法)编译成Unmanaged(非托管代码)Aiasted.SOFTAiasted.SOFT【3.2.1人为手工混淆】优点:混淆顾名思意,就是混乱,不明确的意思。MetaData中都有一个RID,程序集运行时就已经和名称没什么关系了,都使用RID来调用的,所以可以将名称省去。什么叫人为混淆呢,就是人为的制造混淆。手工的折分类,折分方法,打乱一个整体的序顺,增加无用的代码,增加无用的跳转等等缺点:耐心的分析就是解决方案。建议使用反编译工具:Reflector它具有反向逆推及对象连接的功能。Aiasted.SOFTAiasted.SOFT优点使程序集不可见,但又可被调用著名的Reflector就是使用的这种方案不会在物理磁盘上留下痕迹【3.2.2隐藏程序集】主程序集主程序集资源被隐藏的程序集运行中的主程序集解码Aiasted.SOFTAiasted.SOFT缺点:耐心分析,因为加密的过程源代码不能被保护您可以通过分析入口代码得到核心程序集对于某些具备条件的人,无须费时即可破解【3.2.2隐藏程序集】Aiasted.SOFTAiasted.SOFT【3.2.3将Method编译成Unmanaged】优点:绝对无法利用Dotnet反编工具进行反编译运行效率高不可被非法修改也不可以用Win32的反汇编工具进行反汇编缺点:只有使用C++/CLI结束VC++.NETManaged才能实现实现难度高,失去Dotnet优势Aiasted.SOFTAiasted.SOFT3.3第三方保护工具第三方保护工具较好的厂商有:Aiasted.SOFT•产品:MaxtoCode,种类:加密、混淆PerEmptiveSolutions•产品:DotfuscatorCommunity,种类:混淆Remotesoft•产品:RemotesoftProtect,种类:加密•产品:RemotesoftDotfuscator,种类:混淆XenoCode•产品:XenoCode,种类:混淆Aiasted.SOFTAiasted.SOFT3.3第三方保护工具混淆工具DotfuscatorCommunityRemotesoftDotfuscatorXenoCode2005打包工具Thinstall加密工具MaxtoCodeRemotesoftProtectAiasted.SOFTAiasted.SOFT【3.3.1混淆】功能:字符串加密将程序集中所存在的字符串进行加密,防止字符串信息泄漏名称混淆将程序集中的某些ClassName或MethodName更改成一个无意义的字符串流程混淆给程序中增加某些形式的跳转以破坏原有可读的流程但不改变执行流程Aiasted.SOFTAiasted.SOFT字符串加密是一个有效的功能,可以有效的防止程序中的字符串信息泄漏,可惜的是,解密的代码明文的呈现在攻击者面前。名称混淆也是一个不错的功能,但它不能阻止信息泄漏,因为他只是个碍眼法。流程混淆曾被当成救世主,它好象可以保护一切信息,但实际上它也只是一个鸡助下面我们详细分析一下流程混淆的行为。【3.3.1混淆】Aiasted.SOFTAiasted.SOFT源程序集流程混淆的示意图(我们为了方便了解,使用的是C#语言,实际上,流程混淆是基于MSIL上进行的)【3.3.1混淆原理】I=1;J=2;returnI;目标程序集gotoG1;G2:J=2;gotoG3;G1:I=1;gotoG2;G3:returnI;示意图Code1Code2Code3Code2Code1Code3执行入口Aiasted.SOFTAiasted.SOFT演示程序XenoCodeTest.exe使用XenoCode进行流程混淆使用Deflow进行反流程混淆【3.3.1流程反混淆演示】Aiasted.SOFTAiasted.SOFT我们把他的跳转去掉,并把程序块还原置原来的位置,那么您就得到了源来的程序,可以进行反编译的程序.如果您也想开发反混淆工具,很简单,您必须具备字符串操作知识混淆原理【3.3.1流程反混淆原理】Aiasted.SOFTAiasted.SOFT优点:当前流行的保护概念、兼容性好混淆的产品依然是MSIL中间语言、可以跨平台运行如没有工具的支持,想完全改出源代码、几乎是不可能的事情缺点:无法保证程序集的安全、依然会被破坏、修改、取得核心代码达不到理想的保护效果【3.3.1混淆优缺点】Aiasted.SOFTAiasted.SOFTThinstall打包工具优点:可以将主程序和DLL程序打包成一个程序,并执行可以打包Dotnet程序集,并正确执行打包后的程序集不可被反编译缺点:打包程序运行时解包,会在物理磁盘上释放文件。利用查看进程的工具,找到释放的文件,保护即可被解除。【3.3.2打包保护】Aiasted.SOFTAiasted.SOFT较创新的Dotnet保护概念,现存的产品有:MaxtoCode、RemotesoftProtectMaxtoCode及Protect保护效果比较程序集中无法看到源代码(同样)MaxtoCode加密后的程序无法使用Reflector查看RemotesoftProtect加密后可以使用Reflector查看都带着一个Native的DLL作为解密库加密后的软件必须运行在Windows平台上【3.3.3加密保护】Aiasted.SOFTAiasted.SOFT作为目前保护强度最高的产品,它们的原理是什么呢?【3.3.3加密保护原理】MSILMachineCode运行时由JIT映象RuntimeNativeDLL解密Aiasted.SOFTAiasted.SOFT优点:全新的保护概念高强度的保护,使您的软件固若金汤完全不可以被反编译完全杜绝了软件被非法修改缺点:只可以运行在Windows平台下您必须要为高强度的加密付出一点效率【3.3.3加密保护优缺点】Aiasted.SOFTAiasted.SOFTMaxtoCode下载地址:有中文试用版下载,试用版有时间限制RemotesoftProtect目前不提供任何形式的下载【3.3.3如何得到加密保护软件】Aiasted.SOFTAiasted.SOFT感谢参加武汉.Net俱乐部活动我是康世杰(Jason.NET)再次感谢大家
本文标题:Dotnet产品版权保护方案
链接地址:https://www.777doc.com/doc-2870877 .html