CN109101237A - 代码的加密编译方法及装置 - Google Patents
代码的加密编译方法及装置 Download PDFInfo
- Publication number
- CN109101237A CN109101237A CN201810862270.1A CN201810862270A CN109101237A CN 109101237 A CN109101237 A CN 109101237A CN 201810862270 A CN201810862270 A CN 201810862270A CN 109101237 A CN109101237 A CN 109101237A
- Authority
- CN
- China
- Prior art keywords
- source code
- function
- code
- target source
- bytecode
- 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 43
- 230000006870 function Effects 0.000 claims description 126
- 230000014509 gene expression Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 abstract description 11
- 230000015654 memory Effects 0.000 description 17
- 238000003860 storage Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例提供了一种代码的加密编译方法及装置,涉及数据处理技术领域。方法包括:确定出源代码中需要加密编译的目标源代码;将目标源代码加密编译为与目标源代码具有功能等价的字节码;将源代码中的目标源代码替换为用于运行字节码的调用函数,使得运行调用函数时,能够通过字节码的运行而运行关联的目标源代码。该目标源代码不被直接编译运行,而是需要通过运行加密编译的字节码才能够完成其功能,故通过加密编译的字节码避免了目标源代码的编译规则被破解,保证了编译过程中的安全性。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种代码的加密编译方法及装置。
背景技术
目前,软件工程师所编写出的原始程序代码,例如采用c、c++或java等方式编写出原始程序代码均是以人的语言逻辑进行的编写,故计算机在运行这些原始程序代码时,就需要将这些原始程序代码编译成计算机语言的形式。但若编译的规则被攻击者破解后,攻击者就可以获得原始程序代码,并可以对原始程序代码进行分析,导致给用户造成各种损失。因此,如何保证编译过程中的安全性显得尤为重要。
发明内容
本申请在于提供一种代码的加密编译方法及装置,以有效改善上述的缺陷。
为了实现上述目的,本申请的实施例通过如下方式实现:
第一方面,本申请实施例提供了一种代码的加密编译方法,所述方法包括:确定出源代码中需要加密编译的目标源代码;将所述目标源代码加密编译为与所述目标源代码具有功能等价的字节码;将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,使得运行所述调用函数时,能够通过所述字节码的运行而运行关联的所述目标源代码。
结合第一方面,在一些可能的实施方式中,所述将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,包括:在所述源代码中确定出所述目标源代码的起始位置和结束位置,并根据所述起始位置和所述结束位置获得所述目标源代码在所述源代码中的所在位置;将所述所在位置处的所述目标源代码替换为运行所述字节码的调用函数。
结合第一方面,在一些可能的实施方式中,所述将所述所在位置处的所述目标源代码替换为运行所述字节码的调用函数,包括:将所述所在位置处的所述目标源代码替换为用于获得字节码解释器的数据结构的第一子调用函数、用于将所述目标源代码的函数参数设置到所述数据结构中的第二子调用函数、用于将所述字节码输入到所述字节码解释器的第三子调用函数和用于获得通过所述字节码运行所述目标源代码而得到返回值的第四子调用函数;其中,所述调用函数包括:所述第一子调用函数、所述第二子调用函数、所述第三子调用函数和所述第四子调用函数。
结合第一方面,在一些可能的实施方式中,所述确定出源代码中需要加密编译的目标源代码,包括:根据源代码中预设的标识,确定出所述源代码中需要加密编译的目标源代码,其中,所述标识为对所述源代码中的文件进行标记和/或对所述源代码中的函数进行标记。
结合第一方面,在一些可能的实施方式中,所述确定出源代码中需要加密编译的目标源代码,包括:根据预设规则打开预设的宏开关,根据所述宏开关从源代码确定出中需要加密编译的目标源代码,其中,所述目标源代码为一个或多个函数。
结合第一方面,在一些可能的实施方式中,所述源代码包括:中间表达式或汇编代码。
第二方面,本申请实施例提供了一种代码的加密编译装置,所述装置包括:获得模块,用于确定出源代码中需要加密编译的目标源代码。编译模块,用于将所述目标源代码加密编译为与所述目标源代码具有功能等价的字节码。替换模块,用于将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,使得运行所述调用函数时,能够通过所述字节码的运行而运行关联的所述目标源代码。
结合第二方面,在一些可能的实施方式中,所述替换模块,还用于在所述源代码中确定出所述目标源代码的起始位置和结束位置,并根据所述起始位置和所述结束位置获得所述目标源代码在所述源代码中的所在位置;将所述所在位置处的所述目标源代码替换为运行所述字节码的调用函数。
结合第二方面,在一些可能的实施方式中,所述替换模块,还用于将所述所在位置处的所述目标源代码替换为用于获得字节码解释器的数据结构的第一子调用函数、用于将所述目标源代码的函数参数设置到所述数据结构中的第二子调用函数、用于将所述字节码输入到所述字节码解释器的第三子调用函数和用于获得通过所述字节码运行所述目标源代码而得到返回值的第四子调用函数。其中,所述调用函数包括:所述第一子调用函数、所述第二子调用函数、所述第三子调用函数和所述第四子调用函数。
结合第二方面,在一些可能的实施方式中,所述获得模块,还用于根据源代码中预设的标识,确定出源代码中需要加密编译的目标源代码,其中,所述标识为对所述源代码中的文件进行标记和/或对所述源代码中的函数进行标记。
第三方面,本申请实施例提供了一种电子设备,所述电子设备包括:处理器,存储器,总线和通信模块;
所述处理器、所述通信模块和存储器通过所述总线连接;
所述存储器,用于存储程序;
所述处理器,用于通过调用存储在所述存储器中的程序执行第一方面及第一方面的任一可选实施方式中的代码的加密编译方法。
第四方面,本申请实施例提供了一种具有处理器可执行的非易失的程序代码的计算机可读储存介质,所述程序代码使所述处理器执行第一方面及第一方面的任一可选实施方式中的代码的加密编译方法。
本申请实施例的有益效果是:
通过源代码中的目标源代码加密编译为与该目标源代码具有功能等价的字节码,以及再通过将源代码中目标源代码替换为用于运行该字节码的调用函数而获得可执行文件。这样,在可执行文件运行的过程中,该目标源代码不被直接编译运行,而是需要通过运行加密编译的字节码才能够完成其功能,故通过加密编译的字节码避免了目标源代码的编译规则被破解,保证了编译过程中的安全性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请第一实施例提供的一种电子设备的结构框图;
图2示出了本申请第二实施例提供的一种代码的加密编译方法的流程图;
图3示出了本申请第二实施例提供的一种代码的加密编译装置的结构框图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
第一实施例
请参阅图1,本申请实施例提供了电子设备10,该电子设备10可以包括:存储器11、通信模块12、总线13和处理器14。其中,处理器14、通信模块12和存储器11通过总线13连接。处理器14用于执行存储器11中存储的可执行模块,例如计算机程序。图1所示的电子设备10的组件和结构只是示例性的,而非限制性的,根据需要,电子设备10也可以具有其他组件和结构。
其中,存储器11可能包含高速随机存取存储器(Random Access Memory RAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。本实施例中,存储器11存储了执行代码的加密编译方法所需要的程序。
总线13可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器14可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器14中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器14可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。
本发明实施例任意实施例揭示的流过程或定义的装置所执行的方法可以应用于处理器14中,或者由处理器14实现。处理器14在接收到执行指令后,通过总线13调用存储在存储器11中的程序后,处理器14通过总线13控制通信模块12则可以代码的加密编译方法的流程。
第二实施例
本实施例提供了一种代码的加密编译方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。以下对本实施例进行详细介绍。
请参阅图2,在本实施例提供的一种代码的加密编译方法中,该代码的加密编译方法包括:步骤S100、步骤S200和步骤S300。
步骤S100:确定出源代码中需要加密编译的目标源代码。
步骤S200:将所述目标源代码加密编译为与所述目标源代码具有功能等价的字节码。
步骤S300:将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,使得运行所述调用函数时,能够通过所述字节码的运行而运行关联的所述目标源代码。
下面将对该代码的加密编译方法的流程进行详细说明。
步骤S100:确定出源代码中需要加密编译的目标源代码。
电子设备可以利用自身安装的编译器来对源代码进行编译。在本实施例中,需要对源代码中的目标源代码进行加密编译,故电子设备需要确定出源代码中那些是需要加密编译的目标源代码。
作为本实施例中一种可选地实施方式,可以在源代码中对需要加密编译的部分源代码预先设置标识,那么电子设备根据源代码中预设的标识就能够获知该预设有标识的部分源代码便是需要加密编译的目标源代码。
本实施例中,该预设的标识可以是针对源代码中的函数进行标识,例如在c/c++的源代码中使用attribute对源代码中的函数进行标识,即哪个函数需要加密编译便对哪个函数进行标识,该需要加密编的函数即可以为该目标源代码。另外,在源代码中若需要加密编译的函数并不止一个,即目标源代码不止一个,那么所设置的标识也不为一个。但电子设备对每个目标源代码的加密编译过程可以是相同,故为便于对本方案的理解,本实施例以对某一个目标源代码进行加密编译为例来进行说明,并不作为对本方案的限定。
本实施例中,该预设的标识也可以是针对源代码中的文件进行标识,即哪个文件内的至少一个函数均需要加密编译便对哪个文件进行标识,该文件即可以为该目标源代码。另外,若需要加密编译的函数分布在各文件中,例如,A文件中的函数全部需要加密编译,B文件中的函数也全部需要加密编译,那么就需要对A文件和B文件都进行标识,故所需的标识也不止一个。对于该方式,更为便捷的实现可以是将需要加密编译的函数全部放到一个文件中,而其他文件中的函数均是不需要加密编译的函数,故对该一个文件进行标识便可以实现,无需多个标识。
也作为本实施例中一种可选地实施方式,利用c/c++等语言语法所支持的特性,电子设备中可以预先设置宏开关,并也预先设置打开宏开关的预设规则。其中,预设规则可以为将源代码中某些需要加密编译的函数的函数参数与宏开关建立关联关系。那么在电子设备在编译源代码的过程中,读取到具有关联关系的函数参数便可以打开宏开关。这样,电子设备根据宏开关中设置的目标源代码的名称从源代码确定出中需要加密编译的该目标源代码。其中,宏开关中设置目标源代码的名称可以为多个函数的名称。
例如,宏开关的实现代码可以如下:
#ifdef BUILD_FOR_BYTECODE
int add(int a,int g){
returna+b;
}
#else
…//其它代码
#endif
另外,在本实施例中,该源代码可以为中间表达式文件或汇编代码,例如,对于llvm编译器(Low Level Virtual Machine、底层虚拟机)来说,中间表达式文件可以为bitcode文件。在源代码为中间表达式的情况下,电子设备中预先设置了针对中间表达式的标记规则,该标记规则可以为以文件的形式存储在电子设备中。那么,电子设备在获得中间表达式文件时,可以基于标记规则从中间表达式文件中确定出需要加密编译的目标中间表达式文件。
步骤S200:将所述目标源代码加密编译为与所述目标源代码具有功能等价的字节码。
确定出目标源代码后,电子设备就将源代码拆分成了目标源代码和另一部分不需要加密编译的源代码。电子设备为便于编译,电子设备中设置有编译器。那么,电子设备中的编译器便可以将目标源代码按照预设的编译规则编译为带标记的中间表达式文件,并再将带标记的中间表达式文件编译为字节码。其中,编译为字节码的实现过程可以为采用llvm编译器编译出webassembly架构、arm架构、x86架构或其他自定义架构的字节码。以及,电子设备再根据字节码的数据特点建立字节码与目标源代码的功能等价。
步骤S300:将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,使得运行所述调用函数时,能够通过所述字节码的运行而运行关联的所述目标源代码。
为保证源代码的安全性,可以在源代码中将编译出字节码的目标源代码替换掉,那么电子设备就需要在源代码中将目标源代码的位置进行定位。本实施例中,电子设备可以在源代码中确定出该目标源代码的起始位置和结束位置,并根据该起始位置和该结束位置获得该目标源代码在源代码中的所在位置。
其中,定位的方式可以为那么采用clang编译器中的AST功能就可以在源代码中定位出目标源代码的起始位置和结束位置。
但在前述的实施方式,若标识所标记的对象为中间表达式文件,那么基于LLVM编译器,采用简单代码即可在中间表达式文件中定位出目标中间表达式文件的起始位置和结束位置。
另外,若标识所标记的对象为汇编代码文件,那么基于对汇编代码文件的解析便可以在汇编代码文件中定位出目标汇编代码文件的起始位置和结束位置。
与本实施例中,确定出目标源代码的所在位置后,电子设备便可以将该将所在位置处的目标源代码替换为调用函数其中,该调用函数用于运行字节码。即电子设备可以将所在位置处的目标源代码全部抹除,并在该目标源代码原位置处写入新的该调用函数。
针对该调用函数,该调用函数可以依次包括:第一子调用函数、第二子调用函数、第三子调用函数和第四子调用函数。
可选地,第一子调用函数用于获得字节码解释器的数据结构、第二子调用函数用于将目标源代码的函数参数设置到数据结构中、第三子调用函数用于将字节码输入到字节码解释器、而第四子调用函数则用于获得通过字节码运行目标源代码而得到返回值的第四子调用函数。其中,字节码解释器是为运行字节码而预先设置到电子设备中,且字节码解释器的存在方式可以下述的:1源代码、2中间表达式、3汇编文件、4对象文件、5静态库、6动态库、7内存的一个代码段、8存在于内核中和9硬件CPU中的至少一种方式。也就是说,若字节码解释器以两张方式组合存在时,字节码解释器的一部分可以存在硬件CPU上,而另一部分则存储在1-8的任一种上;或字节码解释器的一部分可以存在动态库上,而另一部分则可以存在内核中。
这样,电子设备中运行该源代码时,利用依次运行的这四个子调用函数,便可以实现从字节码解释器中找到字节码,并根据字节码和目标源代码的功能等价运行该目标源代码,从而获得运行结果的返回值。
另外,本实施例中,为增加字节码运行的安全性,第三子调用函数还可以为一个桥接函数,即用于获得字节码的索引,使得该字节码解释器根据该索引而找到字节码。
最后,电子设备将字节码与字节码解释器合并,生成可执行文件,使得该字节码与字节码解释器能够配合运行。
第三实施例
请参阅图3,本申请实施例提供了一种代码的加密编译装置100,该代码的加密编译装置100应用于电子设备,该代码的加密编译装置100包括:
获得模块110,用于确定出源代码中需要加密编译的目标源代码。
编译模块120,用于将所述目标源代码加密编译为与所述目标源代码具有功能等价的字节码。
替换模块130,用于将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,使得运行所述调用函数时,能够通过所述字节码的运行而运行关联的所述目标源代码。
其中,所述替换模块130,还用于在所述源代码中确定出所述目标源代码的起始位置和结束位置,并根据所述起始位置和所述结束位置获得所述目标源代码在所述源代码中的所在位置;将所述所在位置处的所述目标源代码替换为运行所述字节码的调用函数。
所述替换模块130,还用于将所述所在位置处的所述目标源代码替换为用于获得字节码解释器的数据结构的第一子调用函数、用于将所述目标源代码的函数参数设置到所述数据结构中的第二子调用函数、用于将所述字节码输入到所述字节码解释器的第三子调用函数和用于获得通过所述字节码运行所述目标源代码而得到返回值的第四子调用函数;其中,所述调用函数包括:所述第一子调用函数、所述第二子调用函数、所述第三子调用函数和所述第四子调用函数。
所述获得模块110,还用于根据源代码中预设的标识,确定出所述源代码中需要加密编译的目标源代码,其中,所述标识为对所述源代码中的文件进行标记和/或对所述源代码中的函数进行标记。
所述获得模块110,还用于根据预设规则打开预设的宏开关,根据所述宏开关从源代码确定出中需要加密编译的目标源代码,其中,所述目标源代码为多个函数。
需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
综上所述,本申请实施例提供了一种代码的加密编译方法及装置,方法包括:确定出源代码中需要加密编译的目标源代码;将目标源代码加密编译为与目标源代码具有功能等价的字节码;将源代码中的目标源代码替换为用于运行字节码的调用函数,使得运行调用函数时,能够通过字节码的运行而运行关联的目标源代码。
通过源代码中的目标源代码加密编译为与该目标源代码具有功能等价的字节码,以及再通过将源代码中目标源代码替换为用于运行该字节码的调用函数而获得可执行文件。这样,在可执行文件运行的过程中,该目标源代码不被直接编译运行,而是需要通过运行加密编译的字节码才能够完成其功能,故通过加密编译的字节码避免了目标源代码的编译规则被破解,保证了编译过程中的安全性。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种代码的加密编译方法,其特征在于,所述方法包括:
确定出源代码中需要加密编译的目标源代码;
将所述目标源代码加密编译为与所述目标源代码具有功能等价的字节码;
将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,使得运行所述调用函数时,能够通过所述字节码的运行而运行关联的所述目标源代码。
2.根据权利要求1所述的代码的加密编译方法,其特征在于,所述将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,包括:
在所述源代码中确定出所述目标源代码的起始位置和结束位置,并根据所述起始位置和所述结束位置获得所述目标源代码在所述源代码中的所在位置;
将所述所在位置处的所述目标源代码替换为运行所述字节码的调用函数。
3.根据权利要求2所述的代码的加密编译方法,其特征在于,所述将所述所在位置处的所述目标源代码替换为运行所述字节码的调用函数,包括:
将所述所在位置处的所述目标源代码替换为用于获得字节码解释器的数据结构的第一子调用函数、用于将所述目标源代码的函数参数设置到所述数据结构中的第二子调用函数、用于将所述字节码输入到所述字节码解释器的第三子调用函数和用于获得通过所述字节码运行所述目标源代码而得到返回值的第四子调用函数;其中,所述调用函数包括:所述第一子调用函数、所述第二子调用函数、所述第三子调用函数和所述第四子调用函数。
4.根据权利要求1-3任一权项所述的代码的加密编译方法,其特征在于,所述确定出源代码中需要加密编译的目标源代码,包括:
根据源代码中预设的标识,确定出所述源代码中需要加密编译的目标源代码,其中,所述标识为对所述源代码中的文件进行标记和/或对所述源代码中的函数进行标记。
5.根据权利要求1-3任一权项所述的代码的加密编译方法,其特征在于,所述确定出源代码中需要加密编译的目标源代码,包括:
根据预设规则打开预设的宏开关,根据所述宏开关从源代码确定出中需要加密编译的目标源代码,其中,所述目标源代码为一个或多个函数。
6.根据权利要求1所述代码的加密编译方法,其特征在于,所述源代码包括:中间表达式或汇编代码。
7.一种代码的加密编译装置,其特征在于,所述装置包括:
获得模块,用于确定出源代码中需要加密编译的目标源代码;
编译模块,用于将所述目标源代码加密编译为与所述目标源代码具有功能等价的字节码;
替换模块,用于将源代码中的所述目标源代码替换为用于运行所述字节码的调用函数,使得运行所述调用函数时,能够通过所述字节码的运行而运行关联的所述目标源代码。
8.根据权利要求7所述的代码的加密编译装置,其特征在于,
所述替换模块,还用于在所述源代码中确定出所述目标源代码的起始位置和结束位置,并根据所述起始位置和所述结束位置获得所述目标源代码在所述源代码中的所在位置;将所述所在位置处的所述目标源代码替换为运行所述字节码的调用函数。
9.根据权利要求8所述的代码的加密编译装置,其特征在于,
所述替换模块,还用于将所述所在位置处的所述目标源代码替换为用于获得字节码解释器的数据结构的第一子调用函数、用于将所述目标源代码的函数参数设置到所述数据结构中的第二子调用函数、用于将所述字节码输入到所述字节码解释器的第三子调用函数和用于获得通过所述字节码运行所述目标源代码而得到返回值的第四子调用函数;其中,所述调用函数包括:所述第一子调用函数、所述第二子调用函数、所述第三子调用函数和所述第四子调用函数。
10.根据权利要求7-9任一权项所述的代码的加密编译装置,其特征在于,
所述获得模块,还用于根据源代码中预设的标识,确定出所述源代码中需要加密编译的目标源代码,其中,所述标识为对所述源代码中的文件进行标记和/或对所述源代码中的函数进行标记。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862270.1A CN109101237A (zh) | 2018-08-01 | 2018-08-01 | 代码的加密编译方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862270.1A CN109101237A (zh) | 2018-08-01 | 2018-08-01 | 代码的加密编译方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109101237A true CN109101237A (zh) | 2018-12-28 |
Family
ID=64848162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810862270.1A Pending CN109101237A (zh) | 2018-08-01 | 2018-08-01 | 代码的加密编译方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101237A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858204A (zh) * | 2019-01-03 | 2019-06-07 | 武汉极意网络科技有限公司 | 一种基于llvm的程序代码保护方法及装置 |
CN110059456A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 代码保护方法、代码保护装置、存储介质与电子设备 |
CN110147238A (zh) * | 2019-05-29 | 2019-08-20 | 中国人民解放军战略支援部队信息工程大学 | 一种程序编译方法、装置及系统 |
CN110675256A (zh) * | 2019-08-30 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
CN110717150A (zh) * | 2019-10-08 | 2020-01-21 | 北京顶象技术有限公司 | 代码保护方法、装置、保护设备及可读存储介质 |
CN111475152A (zh) * | 2020-04-14 | 2020-07-31 | 中国人民解放军战略支援部队信息工程大学 | 一种代码处理方法及装置 |
CN111680272A (zh) * | 2020-06-05 | 2020-09-18 | 深圳前海微众银行股份有限公司 | 一种字节码加密和解密方法及装置 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN111880806A (zh) * | 2020-07-23 | 2020-11-03 | 深圳融卡智能科技有限公司 | 应用执行方法与应用执行系统 |
CN112148386A (zh) * | 2020-10-12 | 2020-12-29 | Oppo广东移动通信有限公司 | 一种应用加载方法、装置及计算机可读存储介质 |
CN112214736A (zh) * | 2020-11-02 | 2021-01-12 | 杭州安恒信息技术股份有限公司 | 一种代码加密方法及相关组件 |
CN112905187A (zh) * | 2021-02-20 | 2021-06-04 | 深圳前海微众银行股份有限公司 | 编译方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103177199A (zh) * | 2011-12-22 | 2013-06-26 | 盛乐信息技术(上海)有限公司 | 网页应用代码保护方法及系统和执行的提速方法及系统 |
WO2014134080A1 (en) * | 2013-02-28 | 2014-09-04 | Microsoft Corporation | Compiler based obfuscation |
CN105868589A (zh) * | 2016-03-30 | 2016-08-17 | 网易(杭州)网络有限公司 | 一种脚本加密方法、脚本运行方法及装置 |
CN106548046A (zh) * | 2016-10-25 | 2017-03-29 | 北京深思数盾科技股份有限公司 | 一种保护代码的装置和方法 |
CN107784231A (zh) * | 2016-08-24 | 2018-03-09 | 北京花甲科技有限公司 | 指令的执行和动态编译方法、装置及电子设备 |
-
2018
- 2018-08-01 CN CN201810862270.1A patent/CN109101237A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103177199A (zh) * | 2011-12-22 | 2013-06-26 | 盛乐信息技术(上海)有限公司 | 网页应用代码保护方法及系统和执行的提速方法及系统 |
WO2014134080A1 (en) * | 2013-02-28 | 2014-09-04 | Microsoft Corporation | Compiler based obfuscation |
CN105868589A (zh) * | 2016-03-30 | 2016-08-17 | 网易(杭州)网络有限公司 | 一种脚本加密方法、脚本运行方法及装置 |
CN107784231A (zh) * | 2016-08-24 | 2018-03-09 | 北京花甲科技有限公司 | 指令的执行和动态编译方法、装置及电子设备 |
CN106548046A (zh) * | 2016-10-25 | 2017-03-29 | 北京深思数盾科技股份有限公司 | 一种保护代码的装置和方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858204A (zh) * | 2019-01-03 | 2019-06-07 | 武汉极意网络科技有限公司 | 一种基于llvm的程序代码保护方法及装置 |
CN110059456B (zh) * | 2019-04-19 | 2020-06-05 | 同盾控股有限公司 | 代码保护方法、代码保护装置、存储介质与电子设备 |
CN110059456A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 代码保护方法、代码保护装置、存储介质与电子设备 |
CN110147238A (zh) * | 2019-05-29 | 2019-08-20 | 中国人民解放军战略支援部队信息工程大学 | 一种程序编译方法、装置及系统 |
CN110147238B (zh) * | 2019-05-29 | 2022-11-11 | 中国人民解放军战略支援部队信息工程大学 | 一种程序编译方法、装置及系统 |
US11010303B2 (en) | 2019-08-30 | 2021-05-18 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
US11307990B2 (en) | 2019-08-30 | 2022-04-19 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
CN110675256A (zh) * | 2019-08-30 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN110717150A (zh) * | 2019-10-08 | 2020-01-21 | 北京顶象技术有限公司 | 代码保护方法、装置、保护设备及可读存储介质 |
CN111475152A (zh) * | 2020-04-14 | 2020-07-31 | 中国人民解放军战略支援部队信息工程大学 | 一种代码处理方法及装置 |
CN111475152B (zh) * | 2020-04-14 | 2023-03-14 | 中国人民解放军战略支援部队信息工程大学 | 一种代码处理方法及装置 |
CN111680272A (zh) * | 2020-06-05 | 2020-09-18 | 深圳前海微众银行股份有限公司 | 一种字节码加密和解密方法及装置 |
CN111880806A (zh) * | 2020-07-23 | 2020-11-03 | 深圳融卡智能科技有限公司 | 应用执行方法与应用执行系统 |
CN111880806B (zh) * | 2020-07-23 | 2023-11-21 | 无锡融卡科技有限公司 | 应用执行方法与应用执行系统 |
CN112148386A (zh) * | 2020-10-12 | 2020-12-29 | Oppo广东移动通信有限公司 | 一种应用加载方法、装置及计算机可读存储介质 |
CN112214736A (zh) * | 2020-11-02 | 2021-01-12 | 杭州安恒信息技术股份有限公司 | 一种代码加密方法及相关组件 |
CN112905187A (zh) * | 2021-02-20 | 2021-06-04 | 深圳前海微众银行股份有限公司 | 编译方法、装置、电子设备及存储介质 |
CN112905187B (zh) * | 2021-02-20 | 2024-02-23 | 深圳前海微众银行股份有限公司 | 编译方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109101237A (zh) | 代码的加密编译方法及装置 | |
CN110059009B (zh) | 用于测试代码文件的方法和装置 | |
JP7201078B2 (ja) | データ引数を動的に識別し、ソースコードを計装するためのシステムと方法 | |
US5987250A (en) | Transparent instrumentation for computer program behavior analysis | |
US9852303B2 (en) | Protecting sensitive data in software products and in generating core dumps | |
Prähofer et al. | Opportunities and challenges of static code analysis of IEC 61131-3 programs | |
US20040205720A1 (en) | Augmenting debuggers | |
CN101853200B (zh) | 一种高效动态软件漏洞挖掘方法 | |
JP7218793B2 (ja) | プログラムの機能を向上するための制御フローシステム、非一時的可読媒体、および方法 | |
CN107832059A (zh) | 一种基于Makefile的代码静态分析方法和装置 | |
US20130125096A1 (en) | Systems and Methods for Dynamic Collection of Probe Call Sites | |
CN111723382A (zh) | 动态Android程序漏洞验证方法和装置 | |
Leino et al. | Fine-grained caching of verification results | |
CN109871312B (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
CN111124479B (zh) | 配置文件的解析方法、系统及电子设备 | |
US11030074B2 (en) | Code update based on detection of change in runtime code during debugging | |
CN115686631B (zh) | 一种基于知识基的随机指令生成方法、装置及存储介质 | |
US20070277165A1 (en) | Debugging Interpreted Input | |
US10387288B2 (en) | Interactive analysis of a security specification | |
Liu et al. | Exploring missed optimizations in webassembly optimizers | |
US8949103B2 (en) | Program code simulator | |
CN103198244A (zh) | 保护动态链接库的方法 | |
KR102341137B1 (ko) | 중간언어 기반 코드 변환 방법 및 이를 포함하는 전자 장치 | |
WO2019134771A1 (en) | Binary image stack cookie protection | |
US20100251213A1 (en) | Method for executing debug commands |
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 |