.Net程序防破解的一些常用方法
作者:薛东海
来源:《计算机光盘软件与应用》2013年第08
        摘要:保护知识产权是我们每个开发者都很关心的话题,本文介绍了基于.Net开发的软件常用的破解方法和工具,并提出预防这些破解对应的技术策略。
        关键词:反编译;破解;加密
        中图分类号:TP311.10
        1引言
        保护软件的知识产权越来越受到重视,但仅仅从法律层面来保护是不够的,我们可以从技术层面来进一步巩固软件知识产权的保护。.Net是在.Net Framework虚拟机环境下运行的语言,程序被编译成MSIL中间语言,然后由.Net编译器JIT解释映象为本机代码。中间语言很容易被反编译,所以.Net程序防破解需要从以下两角度来防止破解:(1)基于源代码级的反编破解;(2)基于汇编语言级的反编译破解。其它语言开发的软件,也可以从这两个角度来预
防破解。
        2基于源代码级的反编破解及预防策略
        在虚拟机环境下运行的语言,都可以被反编译,如Java.Net等等,本文以.Net为例,来讨论反编译的技术,然后再提出预防被反编译的解决方案。
        2.1下列列出了目前流行的.Net反编译工具,我们可以使用这些工具来测试我们的软件是否可以被反编译。
        软件名称 功能说明
        IL DASM 由微软提供的官方反编译工具,可以将.Net程序反编译为IL文件及资源文件。反编译后的代码可读性较差,不是基于源码级的反编译。
        .Net Reflector 可以将.NET程序集中的中间语言反编译成C#或者Visual Basic代码。同时还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对第三方插件的支持,如可以和Visual Studio.Net工具集成。但目前已经开始收费。
        IL Spv ILspy是一个开源的反编译软件,使用十分方便。反编译出的C#代码更加规范,可读性更好。
        JustDecompile JustDecompile新的免费的.NET 浏览和反编译的开发者效率工具, JustDecompile基于Telerik的多年的代码分析和开发者效率工具。操作更加简便。
        doPeek dotPeek为一免费的反编译和中间语言代码浏览器工具,由JetBrains开发。开发dotPeed的意图在于做出一个高质量的反编译工具,并且结合强大的类似ReSharper的导航和查特性。
        2.2预防反编译策略
        常用的预防反编译策略的方法通过强签名、混淆、加密三步来完成。
        强签名:强命名程序集,可以确保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果签名也会不同。使用微软提供的SN工具可以完成强签名。
        混淆:对程序编译生成后的MSIL中间代码进行打乱处理,最为简单的混淆技术就是名
称混淆,将程序的命名空间名称、类名、方法名、字段名、变量名等打乱,换成特殊符号,及时反编译后也很难看懂程序的逻辑。除此还有字符串加密和压缩、资源加密和压缩、XML文档过滤器、程序集合并和嵌入等等。目前流行的混淆工具有Dotfuscator.NET ReactorXeonCodeEazfuscator.NET等,使用这些工具可以直接对exedll文件进行混淆操作。
        加密:对混淆过的dllexe文件进行加密处理,它是目前最好的保护方式,保护力度最大。加密保护都是基于把.Net的反编译引申到Win32的反汇编中,但这种做法限制了.Net跨平台的优势。此功能的软件有MaxtoCodeRemotesoft protectDNguard.Net Reactor等等。但其中很多加密方式均有对应的破解方法,所以需要根据自身需要,选择合适的加密工具。
        3 基于汇编语言级的反编译破解及预防策略
        当我们对中间语言技术的.Net预防代码级反编译做的很到位,各个反编译工具均无法正常编译出源码,还可以使用类似于OllyDBG软件来对软件进行汇编语言级的反编译破解。
        3.1 汇编级的破解工具和技巧,下表列出了目前常用的破解工具。
        软件名称 功能说明
        Soft-ICE 是一个比较好的跟踪调试工具。使用Soft-ICE可以很容易的跟踪一个软件、或是监视软件产生的错误进行除错。主要有几种平台的版本,DOSWINDOW3.1WIN95/98/2000/NT,属于古董级的工具。
        Trw2000 国内自己编写的调试软件,完全兼容SOFTICE各种指令,是针对破解软件优化的,Windows下的跟踪调试程序,跟踪功能更强;可以设置各种断点,只是断点种类更多;它可以象一些脱壳工具一样完成对加密外壳的去除,自动生成EXE文件,给用户更多的选择。
        OllyDBG 此调试器是基于汇编语言的动态跟踪工具,将IDASoftICE结合起来的思想,Ring 3级调试器,调试功能非常强大,非常容易上手,已代替SoftICE成当前最为流行的调试解密工具。
        这些调试工具的破解共同点就是通过断点调试到注册码或加密狗的判断点,然后修改汇编代码,跳过判断,然后就能如同正版软件一样使用了。以OllyDBG软件为例,到这些判断点是关键,此软件提供了多种方法来快速的寻这些关键点:
        1)字符串参考:根据软件弹出非正版软件的提示信息内容,然后根据这些提示信息来搜索定位的关键的判断点。
        2)函数参考:通过软件中调用的API函数来搜索定位,并分析附近的汇编代码来到关键的判断点。
        3)内存断点:对于序列号等关键内容的计算方法,可以通过内存断点来分析出来。
        4)消息断点及 RUN 跟踪:通过消息断点和RUN 跟踪想集合,能有效的快速到关键点。
        3.2预防汇编级的破解策略
        从上面对汇编级破解的技巧来看,要完全避免破解是不可能的,我们只有通过合理的改变程序逻辑判断,来增加定位关键判断点的难度,总结以下几个方法:
        1)对提示信息进行加密,避免提示信息的原文暴露在代码中,这样跟踪工具就无法通过字符串搜索的方法来到判断点了。
        2)在程序中加入非正版软件的核心模块隐藏,并且不给予提示信息,这样就可以加大定位隐藏菜单的判断点的难度。
        3)序列号的生成计算要与计算机硬件、日期相绑定,并将这些信息加密写入注册表,磁盘等相关目录下,避免软件过期后修改日期、更换电脑来继续获得使用权。
        4)制作定期在线升级程序,一方面方便了软件的升级维护,另一方面也可以验证软件的版权,定期更新破解漏洞。
        4结束语
        防止软件破解一直是个难题,完全杜绝破解是无法实现的,我们只有合理的利用一些反盗版技术来增加破解的难度。基于编译为中间语言的技术开发出来软件,需要从防反编译源码级和汇编级两个层面来预防。其中反编译源码级可以通过强签名、混淆、加密等过程来加大反编译成本;反编译汇编级可以通过加密提示信息、消声隐藏核心模块、定期更新破解漏洞包等手段来增加破解难度。当然随时国内知识产权法的加强,加大软件盗版处罚力度,盗版行为将会越来越少,让国内的软件市场更加健康发展。
        参考文献:
        [1]李富云.试论软件的破解与保护[J].中小企业管理与科技(下旬刊),201111.reactor软件
        [2]李莉,邵新慧.使用Ollydbg工具的破解尝试[J].价值工程,201121.
        [3]孙克争.浅析软件的破解与保护[J].福建电脑,201008.
        [4]罗宏,蒋剑琴,曾庆凯.用于软件保护的代码混淆技术[J].计算机工程,200611.
        [5]王洪锦,常鸿,温文丽,软件加密的反跟踪技术[J],河北北方学院学报(自然科学版),200503.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。