admin 管理员组文章数量: 1184232
2024年4月25日发(作者:健身房加盟)
2008年第l2期
文章编号:1006-2475(2008)12-0114-03
计算机与现代化
JISUANJI YU XIANDAIHUA 总第160期
软件防破解实用方法分析与实现
黄玉波
(江西财经大学现代教育技术中心,江西南昌330013)
摘要:介绍常用软件加密和软件破解的一些方法。在分析它们的优缺点之后,提出了在源码级软件加密的一些策略,并
成功应用在个人软件和商业软件中,获得良好效果。
关键词:加密;破解;源码软件;策略
中图分类号:13r311 文献标识码:A
Analysis and Implementation of Practical Method on Anti-cracking Software
HUANG Yu-bo
(Modem Educaiton Technology Center,Jiangxi University of Finance and Economies,Nanchang 330013,China)
Abstract:This paper introduces a number of eneryption and deeryption technologies on commonly used software.After analyzing
their advantages and disadvantages,it puts forward the new encryption strategies on source・software,which have successfully used
in persona]software and commercial software,and accessed to good results.
Key words:eneryption;decryption;SOUl ̄e-software;strategies
0 引 言
对于软件开发者来说,如何保护自己的知识产
权,在中国尤其重要。这几年,国内众多新闻媒体都
地址、硬件加密狗等信息,通过一定算法生成一个唯
一
的机器码;然后通过一个特殊的算法可以计算出配
套的一个注册码,两码对应输人系统后,软件才能正
常使用;最后软件编译成EXE或DLL后,还需加上一
个防调试、防跟踪的壳。因每台机器上每套软件的机
器码和注册码不同,软件发布后达到限定用户使用套
数、防止盗版的目的。
陆续发表了专题,呼吁民众加强正版意识,扶持中国
软件业,但任重而道远。
目前,适当保护自己软件的知识产权,仍是必要
的,但不应刻意追求。开发者的努力仍应放在自身软
件品质的提高上,以优质的软件和服务赢得客户。
本文以Delphi为开发工具,从实用的角度出发,
探讨软件加密的一些实用方法,一则不刻意追求加密
的强度和深度;二则达到阻挡大多数破解者破解的目
的。
(1)源码级软件加密。
从图1可知,软件是否正版用户,合法性验证很
简单,往往在软件运行时开始判断,如果是合法用户,
就正常执行软件各项功能;如果不合法,就关闭软件,
禁止执行,或限制部分关键功能,或限制使用次数,或
限制使用时间等。软件在源码级嵌入硬件提取、机器
码计算、注册码计算、注册码校验等算法后,编译成可
执行文件,最后往往还要加一层防调试、防跟踪的外
1软件加密
软件加密的一般手段是:运行时提取硬件信息,
如硬盘序列号、CPU序列号、BIOS序列号、网卡MAC
收稿日期:2008-07-29
壳。
这种加密方法往往被有一定开发能力的人采用,
作者简介:黄玉波(1972一),男,江西南昌人,江西财经大学现代教育技术中心软件技术部主任,工程师,硕士,研究方向:软件
工程,计算机技术应用。
2008年第12期 黄玉波:软件防破解实用方法分析与实现 l15
图1 软件源码级常规加密流程图
优点是:加密强度高、算法隐蔽性好,往往要先过脱壳
这一关;缺点是:开发者需要在源码上开发相应的机
器码提取、注册码生成、注册码验证等算法,难度大。
(2)外壳级软件加密。
图2软件外壳级常规加密流程图
从图中可以看出,这种加密方式就非常简单了,
源程序不需做任何修改,只需选用一款加密强度够
高、防脱能力够强的加壳工具,发布演示版时设置好
软件试用次数或时间限制,发布正式版时启动加壳工
具的注册验证,对原可执行程序加壳即可。加壳程序
内部已有了机器码提取、计算注册码、运行时注册码
校验等处理。
这种加密方法往往被开发初学者采用,优点是:
使用简单方便;缺点是:知名的、好的加壳工具,往往
都有对应的脱壳工具;不知名的加壳工具往往又防
脱、加密算法强度不高,也容易脱除。壳一旦脱除,软
件就全功能自由使用了。
2软件破解
软件解密的一般手段都是:首先脱壳,完全放出
或基本放出原始生成的EXE或DLL,然后使用跟踪、
调试工具进行静态或动态分析,找到软件中核对注册
码或机器码的代码段,高手可通过分析代码段,得到
软件加解密的算法,最终制作出注册机;差一些或偷
懒的高手,通过修改代码跳过合法验证,使软件成为
一
个破解版,无需注册或硬件加密狗,就可以自由使
用软件。
一
套软件的注册机出来后,如果作者在下一版本
不修改注册机制,则拥有注册机的人都可以像作者一
样给每个用户发放授权注册码,供用户使用;破解版仅
限当前被破的这个软件版本,新版本出来后,即使作者
没有更改注册算法,破解者仍然必须重新实施破解。
(1)针对源码级加密的破解。
图3针对源码级加密的破解流程
从图3可以发现,这种加密方法,破解难度要大
很多。最重要的两个环节是:①跟踪和调试软件;②
找到注册码校验或生成代码。所以采用这种加密方
法时,要重点加强防跟踪、防调试的处理,以及加强注
册码生成算法的强度、加强注册码校验的隐蔽性。
(2)针对外壳级加密的破解。
图4针对外壳级加密的破解流程
从图4很容易发现,这种外壳级加密的破解难
度,就是脱壳这个过程。对于采用这种加密方法的开
发者,必须采用防脱能力非常强劲的加壳产品。但遗
憾的是市面上有名的加壳工具,都会有高手发布出专
用的脱壳工具,傻瓜式的脱壳工具可以让任何人几秒
钟脱去一个强壳,使强壳不强。反而是一些不常见的
加壳工具可以拦住一些菜鸟级的用户,但对于有一定
经验的破解者,往往又很容易被破。
116 计算机与现代化 2008年第12期
3源码级软件加密实现
基于上述分析,我们知道源码级加密加上强劲的
外壳,这样双重保护才能更好地保护作者的知识产权
和利益。由于加壳工具市面上已有不少,可以通过购
买获得,在此仅以源码级的软件加密策略来分析。
假设已有:
调试工具检测函数:function CT:Boolean;//程
序运行时检测自身是否被调试工具加载
机器码生成函数:function MC:string;//通过本
机网卡、硬盘、CPU等硬件特征码生成唯一序号
关机的过程:procedure CW;//当发现有破解行
为,则强行关机的过程
注册码比对函数(即时生成的注册码与作者提
供的且保存的注册码进行比对):
Function aa(mcode:string):Boolean;
Function bb(mcode:string):Boolean;
Function cc(mcode:string):Boolena;
以上aa、bb、CC、…等函数体完全相同,仅函数名
不同,参数都是机器码,比对成功则返回逻辑真,否则
返回逻辑假。设计重复的这么多个相同函数,为的就
是防破解。如果破解者最终脱壳,并成功破解了调试
工具检测函数,跟踪程序运行,找到某个比对函数,破
解了,我们还有很多个相同函数,分别用于不同的软
件功能调用中,破解者必须一一跟踪破解,将大大增
加破解的难度和花费的时间,最终可能令破解者放
弃。为了更高的防破解能力,aa、bb、cc等函数体也可
以略有不同或完全不同。
(1)策略1。
在主FORM的OnCreate事件中添加代码:
If CT then CW;//如果发现调试工具,则强行关机
Mcode:=MC;//提取本机的机器码
fI not aa(Mcode)then Application.Terminate;//验证注册
码,不符则退出程序
(2)策略2。
在主FORM的OnShow事件中添加代码:
If CT then CW;//如果发现调试工具,则强行关机
fI not bb(Mcode)then Application.Terminate;//验证注册
码,不符则退出程序
(3)策略3。
在重要的功能按钮中添加代码:
If CT then CW;//如果发现调试工具,则强行关机
If not ec(Meode)then Application.Terminate;//验证注册
码,不符则退出程序
不同的按钮中,调用的比对函数最好不同,可增
加加密强度。
(4)策略4。
在主Form中放置一个TYimer控件,在OnTimer
事件中添加代码:
Timer1.Enabled:=False:
fI CT hten CW;//in果发现调试工具,则强行关机
fI not dd(Mcode)then Application.Terminate;//验证注册
码,不符则退出程序
(5)其他。
以上策略综合使用,尽可能多地“埋”下检测“种
子”,令破解者防不胜防,最终在不断地重启机器和
关闭程序中心灰意冷而放弃。但要注意的是:调试工
具检测函数和比对函数的效率尽可能高,否则将影响
程序原有功能的效率;大量的防破解代码存在,可能
在自己调试程序时“中招”,所以最好自己做个记录,
当自己修改、调试程序前先屏蔽这些代码,等程序功
能定型后,再启用这些防破解代码。
4结束语
本文尝试采用相对简洁的策略,实现源码级的软
件加密技术,并已成功应用在个人软件和一些商业软
件中。网上盛传一句话:“没有绝对破解不了的软
件,只是时间问题。”像微软(Microsoft)这样强大的软
件公司的产品,依然有人破解。或许微软并不担心破
解,因为太有名,合法用户和附加产品的利润已经令
公司满意。我们都希望自己的软件产品最终能像微
软一样有名,但在此之前,首要的是提高软件本身的
价值,其次才是保护自己应得的那么一点点产权和利
润。在加密上我们能做的,就是尽可能地延长破解的
时间,而不应去绞尽脑汁寻找“长生不老”灵丹。
(下转第120页)
12O 计算机与现代化 2008年第12期
攻击。为达到可用性、机密性、完整性、可验证性、不
可否认性的安全目标,针对不同的安全威胁,目前已
[4] 蒋廷耀,杨景华,李庆华.移动Ad hoe网络安全技术研
究进展[J].计算机应用研究,2005,22(2):1-4.
[5] 冯朝胜,袁丁.一种基于椭圆曲线密码机制的门限代理
签名方案[J].计算机应用研究,2006,23(7)i108—110.
[6] 洪帆,姜凡,张伟,等.移动Ad hoe网络中带路由机制的
密钥管理[J].计算机工程与科学,2007,29(3):1-3.
[7]吴学成,庄毅,陈翔.分布式PKI在移动Ad hoe网中的
应用[J].计算机技术与发展,2006,16(2):208-211.
[8]季晓君,田畅,张毓森.Ad hoe网络路由安全[J].解放
军理工大学学报,2006,7(4):341—344.
开展了部分研究。主要策略集中在安全路由、密钥管
理服务、人侵检测技术上。本文就基于分发信任的门
限密码技术的安全模型进行了部分的研究,在分析该
技术基本模型与k值改进模型基础上,提出了(n,
k’)门限加密模型的基本思路。说明了各改进设计
方法的加人,可从整体上减少密钥管理服务时间、提
高合作证书成功率的原因。本文只是对密钥管理服
务进行了初步研究,移动Ad hoe网络的安全是一个
综合的解决方案,为了能够达到安全目标,还有很多
工作要做。
[9] 陈晶,崔国华,洪亮,等.一种Ad hoe网络中的安全匿名
按需路由协议[J].计算机科学,2007,34(1):29-33.
[1O]桂超,严冰,孙宝林.提高Ad hoe网络系统安全的一种
构想[J].微计算机应用,2006,27(1):32-34.
参考文献:
[11]陈晶,崔国华,杨木祥,等.一种Ad hoe网络中安全的网
格路由协议[J].计算机学报,2006,29(9):1648-1655.
[12]刘志远,杨植超.Ad hoe网络及其安全性分析[J].计算
机技术与发展,2006,16(1):231-233.
[1]马明辉,武穆清,张乃平.Ad hoe网络安全性分析[J].
现代电信科技,2006(11):17-20.
[2]周晶,蒋泽军,徐邦海.Ad hoe网络安全[J].微计算机
应用,2005,26(1):11-13.
[13]谢铎,周井泉.蚁群算法的QoS最佳路由选择问题的研
究[J].计算机工程与应用,2007,43(3):1l2-114.
[3]冯运仿,刘志远.Ad hoe网络中的一种自组织网络层安
全方案[J].计算机应用研究,2007,24(8):125.128.
夺・夺・牵・夺・÷・,44,-・-4>・夺・夺・4-・÷・夺・4-・夺・孛・夺・夺・夺・
夺・夺・.4-・夺・夺・{,・夺・夺・夺・夺・寺・专・夺・夺・夺・寺 ・・争・夺・夺・夺・
(上接第l16页)
参考文献:
控制工程,2003(6):571-573.
[9]孙永清,顾雨捷,赵戈.基于动态注册码的软件加密保护
[J].计算机工程,2007(12):183-184.
[10]龚伟.反动态跟踪的软件加密技术[J].计算机安全,
2006(7):28-29.
[1] 陈敏.软件加密技术与解密技术[J].软件导刊,2007
(11):4-3.
[2]李树彬,周洪利.一种实用软件保护方案及实现[J].现
代计算机,2004(7):67-70.
[3]徐洪智,张彬连.用软件加密技术[J].电脑编程技巧与
维护,2Ocr7(1):78-80.
[11]何萃红.软件加密防分析技术[J].电脑与信息技术,
1994(2):18-21.
[12]柳荫塘.三层加密技术在软件开发中的应用[J].河北工
业科技,20(0(2):100.104
[13]康文涛.现代信息加密技术[J].河南科技,2004(4):25.
[14]刘志成,周伯生.基于加密和即时解密的软件保护[J].
北京航空航天大学学报,2006(6):721-724.
[4] 徐海银,董九山,李丹.一种改进的软件加密自检测防篡
改技术[J].信息安全与通信保密,2007(3):87—88.
[5]刘文奇,孙艳云,沙莉,等.基于硬盘号和CPU序列号的
软件加密技术[J].网络与信息,2007(7):22.
[6]徐海风,曹小军.软件加密方法及技术[J].山西冶金,
2007(1):58-60.
[15]秦玲,易亿.现行计算机软件保护模式的比较分析[J].
中国科技信息,2007(2):128—131.
[7]刘磊,刘克胜,景劫.软件加密技术及其脆弱性研究[J].
计算机安全,2006(8):20-24.
[16]张柏元,郑有材.注册码软件保护技术研究[J].电脑与
信息技术,2002,10(5):18-20.
[8]熊曾刚,张学敏,王时绘.软件加密技术及应用实例[J].
版权声明:本文标题:软件防破解实用方法分析与实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1714027409a662127.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论