CN104504310A - 基于壳技术的软件保护方法和装置 - Google Patents
基于壳技术的软件保护方法和装置 Download PDFInfo
- Publication number
- CN104504310A CN104504310A CN201510019423.2A CN201510019423A CN104504310A CN 104504310 A CN104504310 A CN 104504310A CN 201510019423 A CN201510019423 A CN 201510019423A CN 104504310 A CN104504310 A CN 104504310A
- Authority
- CN
- China
- Prior art keywords
- software
- shell side
- side sequence
- link library
- shell
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000013475 authorization Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 1
- 239000013065 commercial product Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 208000015181 infectious disease Diseases 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/101—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
- G06F21/1015—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to users
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种基于壳技术的软件保护方法,其特征在于,包括:由编译模块将主程序编译为动态链接库文件;由编译模块编写壳程序;由执行模块将所述主程序的运行入口移入壳程序,并由编译模块将壳程序编译生成可执行程序;以及由执行模块执行壳程序,通过壳程序动态加载并运行主程序。本发明提供的软件保护方法,可以防止对软件的非法拷贝,针对计算机硬件指纹授权,对于网络版,可以防止非本服务器的客户端访问服务,实现了高强度的软件保护。
Description
技术领域
本发明涉及计算机软件保护技术领域,并且特别涉及一种基于壳技术的软件保护方法和装置。
背景技术
随着计算机软件技术的发展,恶意软件的感染破坏能力、破解者的水平都有大幅提升,对于安全性要求高的软件来说,传统的软加密和硬加密方案的保护效果已不再明显,软件加密技术逐渐成熟,其中,壳加密技术便是我们常用的一种软件保护手段。
壳是对加密软件的一个形象的比喻,指的是软件外部的一件“外衣”,是软件的保护屏障。壳加密技术是指利用某种算法,对可移植的可执行文件进行加密、压缩,给文件加上一个外壳,使恶意攻击者无法在对软件反汇编后,直接找到软件的核心代码。软件壳是一段为了防止软件被非法使用、篡改、拷贝等的程序,它通常先于原程序运行,并且在运行后获得了软件的控制权,利用其保护功能对软件进行安全保护。具体而言,先运行壳程序,壳将加密的主程序(即原来的待加壳的程序)代码解密到内存中,运行其中相应功能,并将程序的控制权交还给主程序。
在Win32环境中,软件加壳技术已经有非常成熟的商业产品。但是,对于.NET环境下的软件,由于.NET程序的编译结果不是机器语言代码,而是一种MSIL中间代码,因此,不能使用传统的加壳技术,而是需要一种在.NET环境下使用的软件加壳方法。
发明内容
本发明的目的在于提供一种基于壳技术的软件保护方法和装置。
本发明实施例提供一种基于壳技术的软件保护方法,其特征在于,包括:由编译模块将主程序编译为动态链接库文件;由所述编译模块编写壳程序;由执行模块将所述主程序的运行入口移入所述壳程序,并由所述编译模块将所述壳程序编译生成可执行程序;以及由所述执行模块执行所述壳程序,通过所述壳程序动态加载并运行所述主程序。
优选地,由编译模块将主程序编译为动态链接库文件的所述步骤之后,还包括:由加密模块通过计算机硬件指纹加密所述动态链接库文件。
优选地,所述计算机硬件指纹指的是计算机硬件信息中的识别号。
优选地,由执行模块将所述主程序的运行入口移入所述壳程序,并由所述编译模块将所述壳程序编译生成可执行程序的所述步骤之后,还包括:对所述可执行程序进行混淆或加密。
优选地,在所述壳程序加载所述动态链接库文件时,将所述动态链接库文件解密到内存中,并加载运行。
本发明实施例提供一种基于壳技术的软件保护装置,其特征在于,包括:编译模块,用于将主程序编译为动态链接库文件,编写壳程序,并将所述壳程序编译生成可执行程序;以及执行模块,耦合于所述编译模块,用于将所述主程序的运行入口移入所述壳程序,执行所述壳程序,并通过所述壳程序动态加载并运行所述主程序。
优选地,还包括:加密模块,耦合于所述编译模块,用于通过计算机硬件指纹加密所述动态链接库文件。
优选地,所述计算机硬件指纹指的是计算机硬件信息中的识别号。
优选地,所述加密模块还用于对所述可执行程序进行混淆或加密。
优选地,所述执行模块还用于在所述壳程序加载所述动态链接库文件时,将所述动态链接库文件解密到内存中,并加载运行。
本发明提供的基于壳技术的软件保护装置和方法,通过使用数字签名、MSIL代码混淆、加密等技术,可以防止对软件的非法拷贝,针对计算机硬件指纹授权,对于网络版,可以防止非本服务器的客户端访问服务,实现了高强度的软件保护。此外,由于使用自编的加壳技术,加密技术可以自行设计,并且可以随时调整,而且,用户数不多,因此,攻击者比较少,用这种技术加密的软件安全性也就相对更好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的基于壳技术的软件保护装置的结构示意图。
图2是本发明一实施例提供的基于壳技术的软件保护方法的具体流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1是本发明一实施例提供的基于壳技术的软件保护装置的结构示意图。如图1所示,软件保护装置100包括编译模块110、耦合于编译模块110的加密模块120和执行模块130。
在本发明一实施例中,编译模块110用于将主程序(即待加壳的程序)编译为动态链接库(DLL)文件,编写壳程序,并将壳程序编译生成可执行程序。其中,可利用第三方工具对生成的可执行程序进行混淆或加密。其中,可利用“XenoCode”软件和MaxtoCode”软件对可执行程序的MSIL代码进行混淆或加密。
在本发明一实施例中,加密模块120用于利用加密工具(例如,自编的加密工具)通过输入计算机硬件指纹将生成的DLL文件分别进行加密。其中,计算机硬件指纹指的是计算机硬件信息中的识别号(例如,CPU和硬盘的序列号等),是固定不变的。
在本发明一实施例中,执行模块130用于将主程序的运行入口(即main函数)移入壳程序,执行壳程序,并通过壳程序动态加载并运行主程序。其中,在壳程序加载DLL文件时,临时将DLL文件解密到内存中,并加载运行,解密的DLL文件只存在于内存中。
有利地,本发明提供的基于壳技术的软件保护装置,通过使用数字签名、MSIL代码混淆、加密等技术,可以防止对软件的非法拷贝,针对计算机硬件指纹授权,对于网络版,可以防止非本服务器的客户端访问服务,实现了高强度的软件保护。此外,由于使用自编的加壳技术,加密技术可以自行设计,并且可以随时调整,而且,用户数不多,因此,攻击者比较少,用这种技术加密的软件安全性也就相对更好。
图2是本发明一实施例提供的基于壳技术的软件保护方法200的具体流程图。如图2所示,软件保护方法200包括以下步骤。
步骤S202:由编译模块110将主程序(即待加壳的程序)编译为动态链接库(DLL)文件。
在本发明一实施例中,还包括由加密模块120利用加密工具(例如,自编的加密工具)通过输入计算机硬件指纹将生成的DLL文件分别进行加密。其中,计算机硬件指纹指的是计算机硬件信息中的识别号(例如,CPU和硬盘的序列号等),是固定不变的。
步骤S204:由编译模块110编写壳程序。
步骤206:由执行模块130将主程序的运行入口(即main函数)移入壳程序,并由编译模块110将壳程序编译生成可执行程序。
优选地,可利用第三方工具对生成的可执行程序进行混淆或加密。其中,可利用“XenoCode”软件和MaxtoCode”软件对可执行程序的MSIL代码进行混淆或加密。
步骤S208:由执行模块130,执行壳程序,通过壳程序动态加载并运行主程序。其中,在壳程序加载DLL文件时,临时将DLL文件解密到内存中,并加载运行,解密的DLL文件只存在于内存中。
有利地,本发明提供的基于壳技术的软件保护方法,通过使用数字签名、MSIL代码混淆、加密等技术,可以防止对软件的非法拷贝,针对计算机硬件指纹授权,对于网络版,可以防止非本服务器的客户端访问服务,实现了高强度的软件保护。此外,由于使用自编的加壳技术,加密技术可以自行设计,并且可以随时调整,而且,用户数不多,因此,攻击者比较少,用这种技术加密的软件安全性也就相对更好。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于壳技术的软件保护方法,其特征在于,包括:
由编译模块将主程序编译为动态链接库文件;
由所述编译模块编写壳程序;
由执行模块将所述主程序的运行入口移入所述壳程序,并由所述编译模块将所述壳程序编译生成可执行程序;以及
由所述执行模块执行所述壳程序,通过所述壳程序动态加载并运行所述主程序。
2.如权利要求1所述的软件保护方法,其特征在于,由编译模块将主程序编译为动态链接库文件的所述步骤之后,还包括:
由加密模块通过计算机硬件指纹加密所述动态链接库文件。
3.如权利要求2所述的软件保护方法,其特征在于,所述计算机硬件指纹指的是计算机硬件信息中的识别号。
4.如权利要求1所述的软件保护方法,其特征在于,由执行模块将所述主程序的运行入口移入所述壳程序,并由所述编译模块将所述壳程序编译生成可执行程序的所述步骤之后,还包括:
利用第三方工具对所述可执行程序进行混淆或加密。
5.如权利要求1所述的软件保护方法,其特征在于,在所述壳程序加载所述动态链接库文件时,将所述动态链接库文件解密到内存中,并加载运行。
6.一种基于壳技术的软件保护装置,其特征在于,包括:
编译模块,用于将主程序编译为动态链接库文件,编写壳程序,并将所述壳程序编译生成可执行程序;以及
执行模块,耦合于所述编译模块,用于将所述主程序的运行入口移入所述壳程序,执行所述壳程序,并通过所述壳程序动态加载并运行所述主程序。
7.如权利要求6所述的软件保护装置,其特征在于,还包括:
加密模块,耦合于所述编译模块,用于通过计算机硬件指纹加密所述动态链接库文件。
8.如权利要求7所述的软件保护装置,其特征在于,所述计算机硬件指纹指的是计算机硬件信息中的识别号。
9.如权利要求7所述的软件保护装置,其特征在于,所述加密模块还用于对所述可执行程序进行混淆或加密。
10.如权利要求6所述的软件保护装置,其特征在于,所述执行模块还用于在所述壳程序加载所述动态链接库文件时,将所述动态链接库文件解密到内存中,并加载运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510019423.2A CN104504310A (zh) | 2015-01-15 | 2015-01-15 | 基于壳技术的软件保护方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510019423.2A CN104504310A (zh) | 2015-01-15 | 2015-01-15 | 基于壳技术的软件保护方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104504310A true CN104504310A (zh) | 2015-04-08 |
Family
ID=52945707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510019423.2A Pending CN104504310A (zh) | 2015-01-15 | 2015-01-15 | 基于壳技术的软件保护方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104504310A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295370A (zh) * | 2016-08-19 | 2017-01-04 | 北京奇虎科技有限公司 | 一种加固安装包的动态链接库dll文件的方法和装置 |
CN106372465A (zh) * | 2016-08-30 | 2017-02-01 | 北京深思数盾科技股份有限公司 | 一种动态链接库安全管理方法、***和电子设备 |
CN107784204A (zh) * | 2016-08-31 | 2018-03-09 | 百度在线网络技术(北京)有限公司 | 应用脱壳方法和装置 |
CN112559983A (zh) * | 2021-02-23 | 2021-03-26 | 北京邮电大学 | 软件安全加固方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004884A (zh) * | 2009-08-28 | 2011-04-06 | 华为技术有限公司 | 一种获取可执行文件输入表的方法及装置 |
CN103530535A (zh) * | 2013-10-25 | 2014-01-22 | 苏州通付盾信息技术有限公司 | 一种Android平台应用程序保护的加脱壳方法 |
-
2015
- 2015-01-15 CN CN201510019423.2A patent/CN104504310A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004884A (zh) * | 2009-08-28 | 2011-04-06 | 华为技术有限公司 | 一种获取可执行文件输入表的方法及装置 |
CN103530535A (zh) * | 2013-10-25 | 2014-01-22 | 苏州通付盾信息技术有限公司 | 一种Android平台应用程序保护的加脱壳方法 |
Non-Patent Citations (1)
Title |
---|
王六平,张伟林: "一种基于DES的.NET软件保护方案的设计", 《计算机应用与软件》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295370A (zh) * | 2016-08-19 | 2017-01-04 | 北京奇虎科技有限公司 | 一种加固安装包的动态链接库dll文件的方法和装置 |
CN106295370B (zh) * | 2016-08-19 | 2020-02-28 | 北京奇虎科技有限公司 | 一种加固安装包的动态链接库dll文件的方法和装置 |
CN106372465A (zh) * | 2016-08-30 | 2017-02-01 | 北京深思数盾科技股份有限公司 | 一种动态链接库安全管理方法、***和电子设备 |
CN107784204A (zh) * | 2016-08-31 | 2018-03-09 | 百度在线网络技术(北京)有限公司 | 应用脱壳方法和装置 |
CN107784204B (zh) * | 2016-08-31 | 2021-10-22 | 百度在线网络技术(北京)有限公司 | 应用脱壳方法和装置 |
CN112559983A (zh) * | 2021-02-23 | 2021-03-26 | 北京邮电大学 | 软件安全加固方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6227772B2 (ja) | 動的ライブラリを保護する方法及び装置 | |
CN104318135B (zh) | 一种基于可信执行环境的Java代码安全动态载入方法 | |
US11531751B2 (en) | Software integrity checking systems and methods | |
US20120260106A1 (en) | System and method for binary layout randomization | |
CN112469036B (zh) | 一种消息加解密方法、装置、移动终端和存储介质 | |
WO2017000726A1 (zh) | 一种密钥变换方法、装置及终端 | |
US11783094B2 (en) | System and method for providing protected data storage in data memory | |
CN104504310A (zh) | 基于壳技术的软件保护方法和装置 | |
US11023567B2 (en) | Software intellectual property protection systems and methods for embedded platforms | |
KR101859823B1 (ko) | 키 백업을 사용한 랜섬웨어 방지 시스템 및 방법 | |
EP2674892B1 (en) | A method, a device and a computer program support for execution of encrypted computer code | |
CN103605927A (zh) | 一种基于嵌入式Linux***实现加密和解密方法 | |
Lee et al. | Classification and analysis of security techniques for the user terminal area in the internet banking service | |
CN105426702A (zh) | 基于安卓操作***的应用程序加密解密方法和装置 | |
US20210026935A1 (en) | High performance compute ip encryption using unique set of application attributes | |
CN110020533A (zh) | 一种vr资源的安全保护方法及终端 | |
Kim et al. | CAFE: A virtualization-based approach to protecting sensitive cloud application logic confidentiality | |
CN104463003A (zh) | 一种文件加密保护方法 | |
CN107688729B (zh) | 基于可信主机的应用程序保护***及方法 | |
US20240184900A1 (en) | System and method for providing protected data storage in data memory | |
Lee et al. | Tamper resistant software by integrity-based encryption | |
US9507734B2 (en) | Corrupting data structures for privacy protection | |
CN103839010A (zh) | 一种接口库与安全硬件安全通讯的实现方法 | |
EP2940918B1 (en) | Interface compatible approach for gluing white-box implementation to surrounding program | |
CN104573543A (zh) | 一种支持apt防护的移动存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150408 |
|
RJ01 | Rejection of invention patent application after publication |