基于CRC原理软件保护技术研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于CRC原理软件保护技术研究

基于CRC原理软件保护技术研究   [摘 要]当今盗版软件的泛滥成灾几乎已经成为了我们中国民族软件的灾难,为了防止软件的非法复制、盗版,保护软件开发商的利益,就必须对软件进行加密保护。本文全面地介绍了CRC的基本原理和计算方法,并给出了编程实例。   [关键词]循环冗余校验(CRC) 软件保护 生成多项式   [中图分类号]TP309[文献标识码]A[文章编号]1007-9416(2009)12 -0080-03   The Technology of Software Protection Based on CRC Principle   Xu Yaohong Chen Zhi Ning Kangqi   Dep.of Information Engineer,Shaoyang University,Hunan,422000, Shaoyang China   Abstract The flooding of pirate software has been a calamity of our national software industry.In order to prevent software from pirate,and protect the profit of the software developer,they must encrypt their software to get a protection.Abstract Basic principle and calculating method of CRC were introduced.An example of pro-gramming was showed.   [Key words]Cyclic redundancy check Software protection Generator polynomia      1 引言      CRC(Cyclic Redundancy Check,循环冗余校验)技术是一项很成熟的技术,在文件保护、数据存储和通信传输等众多领域有广泛的应用。最常用的CRC校验形式有CRC-16,CRC-32两种形式,采用CRC-16校验,可以保证在1014位码元中只含有一位未被检测出的错误,采用CRC-32校验的出错概率比CRC-16还低105倍。CRC的主要特点就是:检错能力极强,开销很小,易于实现。从性能和开销上综合考虑,其远远优于奇偶校验及算术和校验等方式。因此,很多软件在加密保护时都将CRC技术应用其中。本文从CRC校验的原理解剖入手,用实际代码和应用解析CRC校验在软件加密中的实际应用,给软件加密保护提供一些帮助和建议。      2 CRC-32算法数学模型      假设需要分析的文件二进制表现形式如下[1]:   B(x)=2nBn+2n-1Bn-1+………+2B1+B0(1)   求此二进制序列数的CRC码时,先乘以232后(即左移32位,再除以生成多项式G(x),所得的余数即是所要求的CRC码。如式(2)所示:   B(x)232/G(X)=2nBn 232/G(X)+2n-1Bn-1232/G(X)+……2B1232/G(X)+B0232/G(X)(2)   可以设:   Bn(x)232/G(X)=Qn(X)+ Rn(X)/Q(G) (3)   其中Qn(X)为整数,Rn(X)为32位二进制余数。将式(3)代入式(2)得[1-3]:   B(x)232/G(X)=2n{Qn(X)+ Rn(X)/Q(G)}+2n-1Bn-1 232/G(X)+……2B1232/G(X)+B0232/G(X)=2n Qn(X)+2n-1{2Rn(X)/Q(G)+Bn-1232/G(X)}+2B1232/G(X)+ B0232/G(X)(4)   再设:   2Rn(X)/Q(G)+ Bn-1232/G(X)=Qn-1(X)+Rn-1(X)/Q(G) (5)   其中Qn-1(X)为整数,Rn-1(X)为32位二进制余数,将式(5)代入(4),如上类推,最后得到:   B(x)232/G(X) =2n Qn(X)+2n-1 Qn-1(X)+……21 Q1(X)+ Q0(X)+ R0(X)/Q(G)(6)   根据CRC的定义,三十二位进制数R0(X)即是我们要求的CRC码。      3 CRC-32软件保护程序的设计思路      首先通过对一个任意长的字符串进行CRC-32转换,最终可以得到一个4个字节长的CRC-32值。而在PE文件可选映像头(IMAGE_OPTIONAL_HEADER)里面,有一个保留字段:Win32Version,经查M

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档