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]. 


本文标签: 软件 破解 注册码 工具 加密