(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(10)申请公布号 CN 103413069 A
(43)申请公布日 2013.11.27
(21)申请号 CN201310284222.6
(22)申请日 2013.07.08
(71)申请人 北京深思数盾科技有限公司
    地址 100872 北京市海淀区中关村大街甲59号文化大厦1706室
(72)发明人 不公告发明人
(74)专利代理机构
    代理人
(51)Int.CI
      G06F21/12
                                                                  权利要求说明书 说明书 幅图
中文写代码软件
(54)发明名称
      一种保护面向对象语言编写的软件的方法
(57)摘要
      本发明涉及一种对使用面向对象语言编写的软件进行保护的方法。此方法的处理对象是被保护软件的所有工程源码。通过分析工程源码,出适合保护的若干个类,然后将这些类的实例字段替换成读写软件保护装置的函数,并且将所有源码中对这些实例字段的读写操作都改为对这些函数的调用。经过这样处理过的源码在编译之后,对被选出来的类的所有实例字段的读写操作都变成了对软件保护装置的读写操作,很难手动实现软件脱离软件保护装置单独运行,增强了软件保护强度,并且整个保护过程可以通过一个工具软件自动实现,简化了软件保护流程。
法律状态
法律状态公告日
法律状态信息
法律状态
2023-01-20
专利权人的姓名或者名称、地址的变更IPC(主分类):G06F21/12专利号:ZL2013102842226变更事项:专利权人变更前:北京深思数盾科技股份有限公司变更后:北京深盾科技股份有限公司变更事项:地址变更前:100193 北京市海淀区西北旺东路10号院东区5号楼5层510变更后:100193 北京市海淀区西北旺东路10号院东区5号楼5层510
专利权人的姓名或者名称、地址的变更
权 利 要 求 说 明 书
1. 一种通过软件保护装置保护面向对象语言编写的软件的方法,所述软件保护装置具有安全处理芯片,其特征在于,       
步骤1:在所述软件的工程源码中选择被保护的类;       
步骤2、将所述被保护的类中的实例字段替换成读写所述软件保护装置中的软件功能模块;       
步骤3、搜索所述软件的工程源码,将所有对所述被保护的类的实例字段的读写代码都替换成上述步骤2中所述的读写所述软件保护装置的所述软件功能模块。       
2. 根据权利要求1所述的方法,其特征在于,在所述步骤2中,直接在所述被保护的类中将实例字段去掉并替换成所述软件功能模块。       
3. 根据权利要求1所述的方法,其特征在于,在所述步骤2中,声明一个类作为所述被保护的类的代理类,并且在所述代理类中对应所述被保护的类的各个实例字段中分别声明用于读写所述软件保护装置的软件功能模块。       
4. 根据权利要求2所述的方法,其特征在于,在所述软件保护装置中进行创建和删除所述被保护的类的对象的操作。       
5. 根据权利要求4所述的方法,其特征在于,在创建和删除所述被保护的类的对象中加入用于在所述软件保护装置中创建和删除被保护的类的对象的代码。       
6. 根据权利要求3所述的方法,其特征在于,在创建和删除所述代理类的软件功能模块中加入用于在所述软件保护装置中创建和删除被保护的类的对象的代码。       
说  明  书
<p>技术领域   
本发明涉及计算机软件保护技术领域,特别涉及一种利用软件保护装置对使用面向对象语言编写的计算机软件进行保护的方法。   
   
背景技术   
随着经济技术的飞速发展,软件作为辅助工具已经深入到了各行各业当中。软件产品是软件设计者和软件编程人员智慧的结晶,软件开发商的生存和发展是软件产品充足供应的基础,因而,保护软件产品的版权,防止软件产品被盗版,具有很重要的现实意义。   
在软件开发商已有的保护软件产品的众多方案中,多数采用了这样一种方式:提炼出软件产品中的核心算法或密钥作为关键程序代码,将所述关键程序代码及该程序代码所需要的数据放在软件保护装置中。功能模块是软件开发商中从软件产品中提取出来的可以或者已经放在软件保护装置中的供外部调用代码、数据或者代码和数据。作为软件保护装置的功能模块,能够供外部软件调用。采用这种方式,以后当用户使用软件产品时,必须要有软件保护装置同时运行,否则将无法使用该软件产品。   
这种方案的优势是,软件产品的关键代码是放在软件保护装置中的,破解者很难得到软件产品的关键程序代码,也很难克隆软件保护装置,也就很难破解该软件产品。当然所述的软件保护装置的处理芯片是一个具有一定安全认证等级的智能卡芯片才可以防止被硬克隆。正因为有这种优势,国内外越来越多的软件开发商都采用了这种方案来保护自己的软件产品。至于软件保护装置硬件产品,则是现有技术,本发明的申请人已研发了多种软件保护装置产品,具体内容参见其www.sense,不再详细介绍其具体内容。   
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体。类是具有相同类型的对象的抽象。一个对象所包含的所有数据和代码可以通过类来构造。封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。继承是让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性。多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。对象之间需要相互沟通,
沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。函数把执行的代码整合在一个方法中,当需要做这些动作的时候直接通过调用这个方法而达到使用的目的。