CN112528342A - 一种基于编译中间结果的软件保护方法 - Google Patents
一种基于编译中间结果的软件保护方法 Download PDFInfo
- Publication number
- CN112528342A CN112528342A CN202011603323.1A CN202011603323A CN112528342A CN 112528342 A CN112528342 A CN 112528342A CN 202011603323 A CN202011603323 A CN 202011603323A CN 112528342 A CN112528342 A CN 112528342A
- Authority
- CN
- China
- Prior art keywords
- data
- digital signature
- split
- software
- message digest
- 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.)
- Granted
Links
Images
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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于编译中间结果的软件保护方法,应用于基础软件技术领域,根据所述原始目标OBJ文件得到分拆数据;对所述分拆数据分配唯一识别ID和预处理;利用所述唯一识别ID得到数字签名,同时利用所述数字签名和唯一识别ID将所述分拆数据重组,得到可执行文件。将分拆数据分为包含保护代码段和不包含保护代码段的数据,传输时,可以仅传输包含保护代码段的数据,能够减小数据传输的压力;对分拆数据进行预处理,主要是对数据进制进行转换起到压缩数据的作用,同时也减小数据传输的压力;通过数字签名验证,能够保证数据不被非法破解,以及篡改,大大提高了软件的安全性能。
Description
技术领域
本发明涉及基础软件技术领域,更具体的说是涉及一种基于编译中间结果的软件保护方法。
背景技术
应用程序的开发包括:源代码的编写,编译器的编译的OBJ文件,以及链接器对OBJ文件的链接这一系列组成。每一个源文件对应一个OBJ文件,OBJ文件是由系统编译器对高级语言进行汇编、符号处理、字符串处理之后的产物,OBJ文件符合相应平台的文档标准,如微软COFF文件标准等。OBJ文件相较于链接后的可执行文件来说,具有更加简单的结构,以及更加灵活的数据索引以及代码调用方式,因此处理起来更加灵活,可以进行多种方式的混淆,包括混淆函数导入导出表,字符串引用,增加冗余性等等。这种操作并不影响程序原有的功能。
目前,针对软件保护的措施中,有针对源代码级的软件混淆,代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。其中一种方式是将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。这样带来了一系列的问题,如被混淆的代码难于理解,因此调试出错也变得困难起来。还有一些针对可执行文件的代码保护,主要表现为对软件加壳。加壳技术是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作,这一部分的工作可以用来对原来的指令进行预处理,将原有的程序执行流程打乱,以做到防止软件被分析和破解。以上两种方式各有优劣,源代码级别的保护很局限,对于较为底层的语言的处理能力有限,而基于可执行文件的加壳种类不多,容易被脱壳,进而将原有程序暴露给分析者。
因此,如何提供一种避免OBJ文件传输过程中泄露的基于编译中间结果的软件保护方法是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于编译中间结果的软件保护方法,能够避免OBJ文件传输过程中泄露,防止软件遭到非法破解以及分析。
为了实现上述目的,本发明提供如下技术方案:
一种基于编译中间结果的软件保护方法,具体步骤包括如下:
将软件源代码进行编译得到原始目标OBJ文件;
根据所述原始目标OBJ文件得到分拆数据;
对所述分拆数据分配唯一识别ID和预处理;
利用所述唯一识别ID得到数字签名,同时利用所述数字签名和唯一识别ID将所述分拆数据重组,得到可执行文件。
优选的,在上述的一种基于编译中间结果的软件保护方法中,所述分拆数据包括第一分拆数据和第二分拆数据;其中,所述第一分拆数据为包含保护代码段的数据,所述第二分拆数据为无保护代码段的数据。
优选的,在上述的一种基于编译中间结果的软件保护方法中,根据所述唯一识别ID区分是否包含保护代码段。
优选的,在上述的一种基于编译中间结果的软件保护方法中,所述唯一识别ID包含:所述分拆数据的序号、每个所述分拆数据对应的私钥、与所述私钥一一对应的公钥。
优选的,在上述的一种基于编译中间结果的软件保护方法中,所述预处理包括:将所述分拆数据默认进制类别进行进制转换,得到压缩数据,所述压缩数据的字节数小于所述分拆数据的字节数。
优选的,在上述的一种基于编译中间结果的软件保护方法中,所述压缩数据采用哈希算法,得到固定长度的消息摘要,再利用公钥对所述消息摘要进行签名,形成数字签名,所述数字签名和所述压缩数据共同传输给请求方。
优选的,在上述的一种基于编译中间结果的软件保护方法中,所述分拆数据重组包括:利用所述私钥和所述公钥验证所述数字签名,所述数字签名验证无误,根据所述分拆数据的序号将所述压缩数据进行排序,并将所述压缩数据转换成默认进制类别的分拆数据。
优选的,在上述的一种基于编译中间结果的软件保护方法中,验证所述数字签名时,利用私钥对数字签名进行解密得到消息摘要,然后用相同的哈希算法对压缩数据进行哈希计算,得到第二消息摘要,将所述消息摘要与所述第二消息摘要进行比较。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于编译中间结果的软件保护方法,根据所述原始目标OBJ文件得到分拆数据;对所述分拆数据分配唯一识别ID和预处理;利用所述唯一识别ID得到数字签名,同时利用所述数字签名和唯一识别ID将所述分拆数据重组,得到可执行文件。将分拆数据分为包含保护代码段和不包含保护代码段的数据,传输时,可以仅传输包含保护代码段的数据,能够减小数据传输的压力;对分拆数据进行预处理,主要是对数据进制进行转换起到压缩数据的作用,同时也减小数据传输的压力;通过数字签名验证,能够保证数据不被非法破解,以及篡改,大大提高了软件的安全性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于编译中间结果的软件保护方法,如图1所示,具体步骤包括如下:
S101将软件源代码进行编译得到原始目标OBJ文件;
S102根据原始目标OBJ文件得到分拆数据;
S103对分拆数据分配唯一识别ID和预处理;
S104利用唯一识别ID得到数字签名,同时利用数字签名和唯一识别ID将分拆数据重组,得到可执行文件。
通过上述技术方案,本发明的实施例中采用数字签名验证保证软件不被非法破解,除此之外,还可以利用电子许可证和加密锁保护软件的方案。
在本发明的一个实施例中,分拆数据包括第一分拆数据和第二分拆数据;其中,第一分拆数据为包含保护代码段的数据,第二分拆数据为无保护代码段的数据。
其中,保护代码段的确定根据软件的核心功能进行确定,例如一款图像识别的软件,其中处理图像、分析图像的功能对应的代码自然就是核心功能代码,而获取图像的功能代码可能与其他拍照软件相同,则被定义为非核心功能代码段。
在本发明的另一个可选的实施例中,在后续的数据传输过程中,可以仅仅传输包换保护代码段的第一分拆数据,不仅能够减少数据传输的负担,也能够减少计算机处理数据的时间。
在本发明的一个实施例中,根据唯一识别ID区分是否包含保护代码段。
进一步,在唯一识别ID中包含标志位,其中标志位用来表示是否含有保护代码段,例如用标签“1”表示包含保护代码段;用标签“0”表示不包含保护代码段。
在本发明的一个实施例中,唯一识别ID包含:分拆数据的序号、每个分拆数据对应的私钥、与私钥一一对应的公钥。
进一步,分拆数据的序号便于数据重组;将每部分数据分为多个数据包,例如根据代码出现的先后顺序标号。
每一个分拆数据具有一个私钥和一个公钥。
在本发明的一个实施例中,预处理包括:将分拆数据默认进制类别进行进制转换,得到压缩数据,压缩数据的字节数小于分拆数据的字节数。
数据压缩时,例如将二进制转换为十进制,进制的转换不仅能压缩数据,而且也可认为是加密的过程。
在本发明的一个实施例中,压缩数据采用哈希算法,得到固定长度的消息摘要,再利用公钥对消息摘要进行签名,形成数字签名,数字签名和压缩数据共同传输给请求方。
在本发明的一个实施例中,分拆数据重组包括:利用私钥和公钥验证数字签名,数字签名验证无误,根据分拆数据的序号将压缩数据进行排序,并将压缩数据转换成默认进制类别的分拆数据。
在本发明的一个实施例中,验证数字签名时,利用私钥对数字签名进行解密得到消息摘要,然后用相同的哈希算法对压缩数据进行哈希计算,得到第二消息摘要,将消息摘要与第二消息摘要进行比较。
具体地,包括软件开发者和软件使用者的参与;根据原始目标OBJ文件得到分拆数据;
软件开发者对分拆数据分配唯一识别ID和预处理;
预处理时,将二进制的分拆数据转换成十进制的压缩数据;
在具体的验证数字签名的过程中,以一个压缩数据包为例,软件开发者会对数据包分配带有标签“1”的唯一识别ID,说明该数据包为包含保护代码段的数据;
其中,每个唯一识别ID内包含的公钥是所有人可见的;而私钥仅有获得授权的软件软件使用者可见;表现形式可以为唯一识别ID中某位或某几位未知;
软件开发者将数据包采用哈希算法,得到固定长度的消息摘要,再利用公钥对消息摘要进行签名,形成数字签名,数字签名和数据共同传输给软件使用者。
软件使用者利用私钥对数字签名进行解密得到消息摘要,然后用相同的哈希算法对压缩数据进行哈希计算,得到第二消息摘要,将消息摘要与第二消息摘要进行比较;
验证完成,则对多个压缩数据根据唯一识别ID中的序号进行排序,然后进行解压缩,将十进制转换为二进制;
最后得到可执行文件。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种基于编译中间结果的软件保护方法,其特征在于,具体步骤包括如下:将软件源代码进行编译得到原始目标OBJ文件;
根据所述原始目标OBJ文件得到分拆数据;
对所述分拆数据分配唯一识别ID和预处理;
利用所述唯一识别ID得到数字签名,同时利用所述数字签名和唯一识别ID将所述分拆数据重组,得到可执行文件。
2.根据权利要求1所述的一种基于编译中间结果的软件保护方法,其特征在于,所述分拆数据包括第一分拆数据和第二分拆数据;其中,所述第一分拆数据为包含保护代码段的数据,所述第二分拆数据为无保护代码段的数据。
3.根据权利要求1所述的一种基于编译中间结果的软件保护方法,其特征在于,根据所述唯一识别ID区分是否包含保护代码段。
4.根据权利要求1所述的一种基于编译中间结果的软件保护方法,其特征在于,所述唯一识别ID包含:所述分拆数据的序号、每个所述分拆数据对应的私钥、与所述私钥一一对应的公钥。
5.根据权利要求4所述的一种基于编译中间结果的软件保护方法,其特征在于,所述预处理包括:将所述分拆数据默认进制类别进行进制转换,得到压缩数据,所述压缩数据的字节数小于所述分拆数据的字节数。
6.根据权利要求5所述的一种基于编译中间结果的软件保护方法,其特征在于,所述压缩数据采用哈希算法,得到固定长度的消息摘要,再利用公钥对所述消息摘要进行签名,形成数字签名,所述数字签名和所述压缩数据共同传输给请求方。
7.根据权利要求6所述的一种基于编译中间结果的软件保护方法,其特征在于,所述分拆数据重组包括:利用所述私钥和所述公钥验证所述数字签名,所述数字签名验证无误,根据所述分拆数据的序号将所述压缩数据进行排序,并将所述压缩数据转换成默认进制类别的分拆数据。
8.根据权利要求7所述的一种基于编译中间结果的软件保护方法,其特征在于,验证所述数字签名时,利用私钥对数字签名进行解密得到消息摘要,然后用相同的哈希算法对压缩数据进行哈希计算,得到第二消息摘要,将所述消息摘要与所述第二消息摘要进行比较。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011603323.1A CN112528342B (zh) | 2020-12-29 | 2020-12-29 | 一种基于编译中间结果的软件保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011603323.1A CN112528342B (zh) | 2020-12-29 | 2020-12-29 | 一种基于编译中间结果的软件保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112528342A true CN112528342A (zh) | 2021-03-19 |
CN112528342B CN112528342B (zh) | 2022-06-28 |
Family
ID=74977458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011603323.1A Active CN112528342B (zh) | 2020-12-29 | 2020-12-29 | 一种基于编译中间结果的软件保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112528342B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023100011A1 (en) * | 2021-12-01 | 2023-06-08 | International Business Machines Corporation | Secure software compilation and software verification |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104091100A (zh) * | 2014-07-15 | 2014-10-08 | 电子科技大学 | 一种基于编译中间结果的软件保护方法 |
CN106055934A (zh) * | 2016-05-19 | 2016-10-26 | 福建创意嘉和软件有限公司 | 一种基于veh的代码保护方法和装置 |
CN106203100A (zh) * | 2015-04-29 | 2016-12-07 | 华为技术有限公司 | 一种完整性校验方法和装置 |
CN107038353A (zh) * | 2017-03-28 | 2017-08-11 | 武汉斗鱼网络科技有限公司 | 软件程序的校验保护方法及系统 |
CN107609416A (zh) * | 2017-09-11 | 2018-01-19 | 浙江志诚软件有限公司 | 用户数据的安全加密方法、系统、计算机装置及计算机可读存储介质 |
CN107967415A (zh) * | 2017-12-11 | 2018-04-27 | 北京奇虎科技有限公司 | 资源混淆保护方法、系统及终端装置 |
WO2020100855A1 (ja) * | 2018-11-13 | 2020-05-22 | 日本電信電話株式会社 | 権利者端末、利用者端末、新権利者端末、権利者プログラム、利用者プログラム、新権利者プログラム、コンテンツ利用システムおよびルートオブジェクトデータのデータ構造 |
FR3096161A1 (fr) * | 2019-05-14 | 2020-11-20 | Orange | Procédé, dispositif et système de sécurisation de données et de clés de chiffrement d'un objet connecté. |
-
2020
- 2020-12-29 CN CN202011603323.1A patent/CN112528342B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104091100A (zh) * | 2014-07-15 | 2014-10-08 | 电子科技大学 | 一种基于编译中间结果的软件保护方法 |
CN106203100A (zh) * | 2015-04-29 | 2016-12-07 | 华为技术有限公司 | 一种完整性校验方法和装置 |
CN106055934A (zh) * | 2016-05-19 | 2016-10-26 | 福建创意嘉和软件有限公司 | 一种基于veh的代码保护方法和装置 |
CN107038353A (zh) * | 2017-03-28 | 2017-08-11 | 武汉斗鱼网络科技有限公司 | 软件程序的校验保护方法及系统 |
CN107609416A (zh) * | 2017-09-11 | 2018-01-19 | 浙江志诚软件有限公司 | 用户数据的安全加密方法、系统、计算机装置及计算机可读存储介质 |
CN107967415A (zh) * | 2017-12-11 | 2018-04-27 | 北京奇虎科技有限公司 | 资源混淆保护方法、系统及终端装置 |
WO2020100855A1 (ja) * | 2018-11-13 | 2020-05-22 | 日本電信電話株式会社 | 権利者端末、利用者端末、新権利者端末、権利者プログラム、利用者プログラム、新権利者プログラム、コンテンツ利用システムおよびルートオブジェクトデータのデータ構造 |
FR3096161A1 (fr) * | 2019-05-14 | 2020-11-20 | Orange | Procédé, dispositif et système de sécurisation de données et de clés de chiffrement d'un objet connecté. |
Non-Patent Citations (1)
Title |
---|
龚少麟: "Java软件保护方案的设计和实现", 《计算机时代》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023100011A1 (en) * | 2021-12-01 | 2023-06-08 | International Business Machines Corporation | Secure software compilation and software verification |
Also Published As
Publication number | Publication date |
---|---|
CN112528342B (zh) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170300670A1 (en) | Systems and methods for watermarking software and other media | |
JP6257754B2 (ja) | データの保護 | |
CN101568927B (zh) | 混淆计算机程序代码 | |
US9602289B2 (en) | Steganographic embedding of executable code | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
CN102576391B (zh) | 嵌入在shell代码中的软件许可 | |
US9892661B2 (en) | Steganographic embedding of hidden payload | |
CN106599628A (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
WO2016199166A1 (en) | Potentate: a cryptography-obfuscating, self-policing, pervasive distribution system for digital content | |
CN109992987B (zh) | 基于Nginx的脚本文件保护方法、装置及终端设备 | |
BRPI0614089A2 (pt) | método para evitar engenharia reversa de software, modificação não autorizada e interceptação de dados de tempo de execução | |
JP2017513077A (ja) | 見分けが難解な識別子変換を用いたコード難読化装置及び方法 | |
JP2004511031A (ja) | ディジタル・データ保護構成 | |
CN114547558B (zh) | 授权方法、授权控制方法及装置、设备和介质 | |
WO2015035827A1 (en) | Method and apparatus for providing string encryption and decryption in program files | |
US8677149B2 (en) | Method and system for protecting intellectual property in software | |
CN109241707A (zh) | 应用程序的混淆方法、装置和服务器 | |
CN108829396B (zh) | 脚本编译的方法、脚本执行的方法、相关装置及系统 | |
CN112528342B (zh) | 一种基于编译中间结果的软件保护方法 | |
US8200983B1 (en) | System and method for tamper-proofing executable binary assemblies | |
CN114547653B (zh) | 开发环境的加密方法、解密方法及装置、设备和介质 | |
CN116611032A (zh) | 一种jar包中嵌入和提取软件水印的方法、系统和存储介质 | |
CN114968206A (zh) | 一种编程语言代码动态混淆方法及系统 | |
Chroni et al. | Efficient encoding of watermark numbers as reducible permutation graphs | |
Wang et al. | An efficient control-flow based obfuscator for micropython bytecode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |