CN103136458A - 一种Linux操作系统的代码保护方法及其模块 - Google Patents
一种Linux操作系统的代码保护方法及其模块 Download PDFInfo
- Publication number
- CN103136458A CN103136458A CN2013100217057A CN201310021705A CN103136458A CN 103136458 A CN103136458 A CN 103136458A CN 2013100217057 A CN2013100217057 A CN 2013100217057A CN 201310021705 A CN201310021705 A CN 201310021705A CN 103136458 A CN103136458 A CN 103136458A
- Authority
- CN
- China
- Prior art keywords
- file
- code
- function
- extracts
- extraction
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种Linux操作系统的代码保护方法及其模块,该方法包括:生成步骤,将代码文件生成Linux操作系统的动态库文件;抽取步骤,从所述动态库文件中抽取出所要保护的代码;处理步骤,将抽取的代码存放在第一文件中。本发明方法通过对一个通用格式的代码文件进行代码抽取,并将抽取的代码按照设定格式存放,克服了利用现有工具对它的反汇编,使得该文件中的代码得到的保护。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种Linux操作系统的代码保护方法及其模块。
背景技术
由于Linux系统具有开源的特性、软件授权费用低和应用开发资源丰富等优点,已经得到了广泛的应用,并且在民用和办公以及开发领域具有越来越多的用户。
Linux系统具有安全可靠、内核可定制、源代码开放等这些优点,但是就是因为其具有开放性,有些关键性的代码,如核心加密算法不能得到保护。
例如,Linux动态库的标准格式是ELF,它可以被一般的反汇编工具,如objdump工具反汇编。下面例子,展示了Linux动态库以及反汇编:
(1)c代码文件test.c
(2)生成动态库libtest.so:
cc-c./test.c
cc-fPIC-shared-o./libtest.so./test.o
(3)利用objdump工具将libtest.so反汇编出来的代码:
从反汇编出来的代码,比较容易的看出这个函数要实现的功能,使得动态库中的关键代码无法受到保护。
因此,亟需一种代码保护方法来保护动态库中的关键代码,使得动态库无法通过反汇编得到其汇编代码。
发明内容
本发明所要解决的技术问题之一是需要提供一种防止反汇编得到代码的Linux操作系统的代码保护方法及其模块。
为了解决上述技术问题,本发明提供了一种Linux操作系统的代码保护方法,包括:生成步骤,将代码文件生成Linux操作系统的动态库文件;抽取步骤,从所述动态库文件中抽取出所要保护的代码;处理步骤,将抽取的代码存放在第一文件中。
进一步,在所述处理步骤中,将抽取的代码按照设定格式存放在第一文件中,其中,所述设定格式包括头部结构和函数结构,所述头部结构用来表征关于抽取的代码的特征,所述函数结构用来表征关于抽取的代码中各个函数的特征。
进一步,所述处理步骤还包括,将抽取代码后的文件记为第二文件,将所述第二文件的权限设置为可读权限、可写权限和可执行权限。
进一步,在要实现所述代码文件的功能时,还包括合并步骤,在内存中将第一文件和第二文件进行合并,进一步包括以下步骤,利用函数dlopen预加载所述第二文件;根据所述设定格式,从第一文件中获取所述抽取的代码中各个函数的函数名和对应的代码;利用函数dlsym得到所述各个函数在当前预加载所述第二文件的进程空间中的内存地址;利用函数memcpy将与所述各个函数对应的代码拷贝到相应的内存地址中,实现所述第一文件和所述第二文件的合并。
进一步,在所述第二文件中所抽取代码的原位置上,填充不与所抽取代码的值相同的数值。
进一步,在所述处理步骤中,进一步包括对所述抽取的代码和/或所述第一文件进行加密;在要实现所述代码文件的功能时,还包括对进行加密的所述抽取的代码和/或所述第一文件进行解密。
进一步,在所述抽取步骤中,进一步包括,配置第三文件,该文件中包含要抽取的函数名;根据所述第三文件中的函数名从所述动态库文件中抽取出所要保护的代码。
根据本发明的另一方面,还提供了一种Linux操作系统的代码保护模块,该模块包括:生成单元,其用于将代码文件生成Linux操作系统的动态库文件;抽取单元,其用于从所述动态库文件中抽取出所要保护的代码;处理单元,其用于将抽取的代码存放在第一文件中。
进一步,所述处理单元进一步用于将抽取的代码按照设定格式存放在第一文件中,其中,所述设定格式包括头部结构和函数结构,所述头部结构用来表征关于抽取的代码的特征,所述函数结构用来表征关于抽取的代码中各个函数的特征。
进一步,所述处理单元进一步用于,将抽取代码后的文件记为第二文件,将所述第二文件的权限设置为可读权限、可写权限和可执行权限。
进一步,还包括,合并单元,在要实现所述代码文件的功能时,其在内存中将第一文件和第二文件进行合并,进一步用于,利用函数dlopen预加载所述第二文件;根据所述设定格式,从第一文件中获取所述抽取的代码中各个函数的函数名和对应的代码;利用函数dlsym得到所述各个函数在当前预加载所述第二文件的进程空间中的内存地址;利用函数memcpy将与所述各个函数对应的代码拷贝到相应的内存地址中,实现所述第一文件和所述第二文件的合并。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
本发明方法通过对一个通用格式的代码文件进行代码抽取,并将抽取的代码按照设定格式存放,克服了利用现有工具对它的反汇编,使得该文件中的代码得到的保护。
另外,在使用该代码文件之前,由于在内存中将抽取的代码和抽取代码后的文件进行合并来实现原文件的功能,因此增强了对代码的保护。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明第一实施例的代码保护方法的流程示意图;
图2是根据本发明第二实施例的代码保护模块的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
第一实施例
图1是根据本发明第一实施例的代码保护方法的流程示意图,下面参考图1,详细说明本实施例的各个步骤。
步骤S110(以下省略“步骤”二字),将代码文件生成Linux操作系统的动态库文件A。
具体地,通过Linux操作系统的一般方式来生成的动态库文件,首先由编译器编译源文件产生.o文件,然后链接.o文件产生.so文件,该.so文件即为动态库文件。
S120,从动态库文件A中抽取出所要保护的代码。
具体地,由于动态库文件的标准格式是ELF文件格式,它会记录函数的名称和代码长度,因此,可以根据函数名来定位要抽取的代码。
优选地,在抽取代码时,可以配置一个文件(可称为第三文件),其中包括要抽取的函数名,缺省是抽取所有的非系统函数的代码(也就是动态库中类型是SHT_DYNSYM的section中的代码)。根据该文件中的函数名从动态库文件中抽取出所要保护的代码。
通过配置该文件,使得抽取代码的灵活性增大。假设文件A中总共有10个函数,分别记为encry_1,encry_2,...encry_10。另外配置的文件中描述了要抽取的函数名,如encry_1和encry_2,那么抽取的时候,只需要将文件A中的函数encry_1和encry_2抽取出来即可,而不需要对其它函数进行处理。如果没有该配置的文件,则所有的10个函数都会被抽取出来。因此通过配置文件来指定哪些需要函数需要抽取。
S130,对抽取代码后的文件和抽取的代码进行处理得到文件B和文件C。
具体地,将抽取代码后的文件记为文件B(可称为第二文件),在文件B的抽取代码的原位置,可以填充任何不与原来抽取代码的值相同的数值,优选填充0或随机数。
通过利用填充的数值来替换原代码,就可以达到期望的目标,即反汇编文件B后,得不到汇编后的代码,或者即使得到了代码,也是不正确的代码。随机数可以通过一个函数来得到。
并且,对文件B的程序段,必须要进行权限设置,它原先的权限是可读权限和可执行权限(简称RX权限),现在将其修改成可读权限、可写权限和可执行权限(简称RWX权限)。增加可写权限(即W权限)是为了后面合并代码,因为,Linux通过对动态库内存映射后,代码段如果是不可写的,那就没办法完成后述的合并操作。
将抽取出来的代码按设定的格式存放在另外一个文件C(可称为第一文件)中。其中,设定格式包括头部结构和函数结构,头部结构用来表征关于抽取的代码的特征,函数结构用来表征关于抽取的代码中各个函数的特征。需要说明的是,函数结构的数量是在头部结构中指定的抽取的函数的数量。然而,本实施例所涉及的设定格式仅为一个示例,并不限制其他的格式。
另外,为了更好地保护代码,还可以对文件C和/或抽取出的代码进行加密,具体可以采用成熟的加密算法,例如,MD5算法、RSA算法或DES算法。因此,当文件C被加密后,其内部的代码更难被破解。
在本实施例中,通过对抽取的代码进行取反操作来实现加密。
优选地,本实施例中文件C的设定格式如下所示,
头部结构:
函数结构:
例如,若该文件C的头部结构如下:
h_version 0x01
h_fun_totals 0x02
h_encry_method 0x00
h_fun_offset 0x9
则文件C的头部中描述如下:版本号是1,共有2个函数,加密方法0(按位取反进行加密),第一个函数在文件中的偏移值是9。
若从文件C中抽取了两个函数,记为第一函数和第二函数。其中,第一函数为encry_1,其函数结构如下:
f_total_len 0x1D
f_fun_len 0x07
f_code_len 0xa
f_fun encry_1
f_code 0xaa 0x76 0x1a 0x47 0xfd 0xff 0xff 0xff 0xa2 0x3c
该函数encry_1的函数描述如下:
函数名为encry_1;函数名的长度为0x7;代码长度为0xa;代码为0xaa0x76 0x1a 0x47 0xfd 0xff 0xff 0xff 0xa2 0x3c,它实际上是对原代码0x550x89 0xe5 0xb8 0x02 0x00 0x00 0x00 0x5d 0xc3 进行按位取反后的值;它结构长度为0xa+0x7+4*3=29=0x1D。
第二函数为encry_2,它类似encry_1函数,该函数结构如下:
f_total_len 0x1D
f_fun_len 0x07
f_code_len 0xa
f_fun encry_2
f_code 0xaa 0x76 0x1a 0x47 0xff 0xff 0xff 0xff 0xa2 0x3c
其函数描述为:函数名为encry_2;函数名的长度为0x7;代码长度为0xa;代码为0xaa 0x76 0x1a 0x47 0xff 0xff 0xff 0xff 0xa2 0x3c,它实际上是对原代码0x55 0x89 0xe5 0xb8 0x00 0x00 0x00 0x00 0x5d 0xc3进行按位取反后的值;它结构长度为0xa+0x7+4*3=29=0x1D。
需要说明的是,文件B是抽取后的文件A,是个“空壳”动态库,可以被链接,但是无法执行,很显然是因为其内部的代码已经不见了。并且,由于文件C是私有格式的文件,不会利用反汇编工具对其进行反汇编操作。
经过此步骤后,文件A就不再需要了,以后只用文件B和文件C。
S140,在要实现代码文件的功能时,即运行文件B时,在内存中将文件B和文件C进行合并。
若文件C和/或抽取的代码被加密,则在运行之前,还需要对文件C和/或抽取的代码进行解密,然后在在内存中将文件B和文件C进行合以实现和原先的文件A完全一样的功能。
具体地,首先利用函数dlopen预加载文件B,即打开文件B,然后处理文件C,循环处理其内部的函数结构。
更具体地,首先,根据设定格式,从文件C中获取抽取的代码中各个函数的函数名和对应的代码。在本实施例中利用函数名b_fun来表示指代的函数和利用代码b_code来表示所指代的代码。例如,若文件C中有10个函数,则要需要循环处理10次,对于每一次循环都得到文件C中的某个函数,在此用b_fun指代这个函数名,用b_code指代与b_fun对应的代码。
然后,利用函数dlsym得到各个函数在当前预加载文件B的进程空间中的内存地址。以函数名b_fun来说明,获取在调用动态库的进程空间中b_fun的内存地址addr。
最后,利用函数memcpy将与各个函数对应的代码拷贝到相应的内存地址中,实现文件B和文件C的合并。以函数名b_fun来说明,将与之对应的代码b_code,拷贝到地址addr。通过dlopen预加载文件B,在C中通过dlsym得到函数在当前进程中的虚拟地址,然后将C中的代码拷贝到对应的进程内存处,这就完成了合并。完成合并后,对动态库文件的使用和进行上述保护之前的操作是完全一样。
需要说明的是,为了能够保留原文件所实现的功能,需要将抽取代码后的文件和存储代码的文件进行合并,如果在文件系统中进行合并,就产生了实际的合并文件,也就是恢复了原文件,这样就降低了保护的能力。然而本实施例的合并是在内存中执行的,因此无法获取这个合并的实际结果,所以这极大的增强了对代码的保护。
为了更好地说明本发明的优点和特征,现对一示例进行说明。利用上述步骤说明如何对代码文件test.c中的函数encry_1进行保护。
首先通过以下代码将代码文件test.c生成动态库文件libtest.so:
cc-c./test.c
cc-fPIC-shared-o./libtest.so./test.o
然后,将文件libtest.so中函数encry_1的核心代码抽取,并产生文件C,在生成C的过程中,对抽取的代码进行最简单的取反操作进行加密。以及通过对抽取代码后的文件libtest.so中的核心代码的位置填充0来得到文件B。
在利用工具objdump将文件B反汇编出来后,得到的代码如下:
00000448<encry_1>:
...
将该结果与原始的libtest.so反汇编后的结果进行比较,可以看出函数encry_1的代码不见了。
由于文件C的格式是私有的,因此它无法被反汇编,另外它还被加密,更增强了代码的保护。通过文件B和文件C,就实现对原文件动态库libtest.so中的核心代码的保护。
当要使用libtest.so时,实际上只有文件B和C。在调用函数encry_1之前,通过将他们进行合并,然后调用encry_1,即可得到期望的结果。
第二实施例_
图2是根据本发明第二实施例的代码保护模块的结构示意图,下面参考图2来说明本模块的组成部分。
本实施例的代码保护模块包括以下部分:生成单元21、抽取单元22、处理单元23以及合并单元24。生成单元21和抽取单元22的一端连接,抽取单元22的另一端与处理单元23的一端连接,处理单元23的另一端与合并单元24连接,接下来,详细说明代码保护模块各个部分的功能。
生成单元21,其用于将代码文件生成Linux操作系统的动态库文件A。
具体地,生成单元21通过Linux操作系统的一般方式来生成的动态库文件,首先由编译器编译源文件产生.o文件,然后链接.o文件产生.so文件,该.so文件即为动态库文件。
抽取单元22,其用于从动态库文件A中抽取出所要保护的代码。
具体地,由于动态库文件的标准格式是ELF文件格式,它会记录函数的名称和代码长度,因此,抽取单元22可以根据函数名来定位要抽取的代码。
优选地,在抽取代码时,可以配置一个文件(可称为第三文件),其中包括要抽取的函数名,缺省是抽取所有的非系统函数的代码(也就是动态库中类型是SHT_DYNSYM的section中的代码)。根据该文件中的函数名从动态库文件中抽取出所要保护的代码。通过配置该文件,使得抽取代码的灵活性增大。
处理单元23,其用于对抽取代码后的文件和抽取的代码进行处理得到文件B和文件C。该单元作为本实施例的重要组成部分。
具体地,处理单元23将抽取代码后的文件记为文件B(可称为第二文件),在文件B的抽取代码的原位置,可以填充任何不与原来代码的值相同的数值,优选通过填充0或随机数。
并且,处理单元23还对文件B的程序段进行权限设置。其将原先的权限,即可读权限和可执行权限(简称RX权限),修改成可读权限、可写权限和可执行权限(简称RWX权限)。
处理单元23进一步将抽取出来的代码其按设定的格式存放在另外一个文件C(可称为第一文件)中。其中,设定格式包括头部结构和函数结构,头部结构用来表征关于抽取的代码的特征,函数结构用来表征关于抽取的代码中各个函数的特征。需要说明的是,函数结构的数量是在头部结构中指定的抽取的函数的数量。
另外,为了更好地保护代码,处理单元23还可以对文件C和/或抽取出的代码进行加密,具体可以采用成熟的加密算法,例如,MD5算法、RSA算法或DES算法。因此,当文件C被加密后,其内部的代码更难被破解。
在本实施例中,处理单元23通过对抽取的代码进行取反操作来实现加密。
优选地,本实施例中文件C的设定格式如下所示,
头部结构:
函数结构:
需要说明的是,文件B是抽取后的文件A,是个“空壳”动态库,可以被链接,但是无法执行,很显然是因为其内部的代码已经不见了。并且,由于文件C是私有格式的文件,不会利用反汇编工具对其进行反汇编操作。
合并单元24,其在要实现代码文件的功能时,即运行文件B时,在内存中将文件B和文件C进行合并。
若文件C和/或抽取的代码被加密,在运行时,合并单元24还需要对文件C/或抽取的代码进行解密,然后在在内存中将文件B和文件C进行合以实现和原先的文件A完全一样的功能。
具体地,合并单元24首先利用函数dlopen预加载文件B,即打开文件B,然后处理文件C,循环处理其内部的函数结构。
更具体地,首先,合并单元24根据设定格式,从文件C中获取抽取的代码中各个函数的函数名和对应的代码。然后,合并单元24利用函数dlsym得到各个函数在当前预加载文件B的进程空间中的内存地址。
最后,合并单元24利用函数memcpy将与各个函数对应的代码拷贝到相应的内存地址中,实现文件B和所述文件C的合并。
需要说明的是,为了能够保留原文件所实现的功能,需要将抽取代码后的文件和存储代码的文件进行合并,如果在文件系统中进行合并,就产生了实际的合并文件,也就是恢复了原文件,这样就降低了保护的能力。然而本实施例的合并是在内存中执行的,因此无法获取这个合并的实际结果,所以这极大的增强了对代码的保护。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (11)
1.一种Linux操作系统的代码保护方法,其特征在于,包括:
生成步骤,将代码文件生成Linux操作系统的动态库文件;
抽取步骤,从所述动态库文件中抽取出所要保护的代码;
处理步骤,将抽取的代码存放在第一文件中。
2.根据权利要求1所述的代码保护方法,其特征在于,在所述处理步骤中,
将抽取的代码按照设定格式存放在所述第一文件中,其中,所述设定格式包括头部结构和函数结构,所述头部结构用来表征关于抽取的代码的特征,所述函数结构用来表征关于抽取的代码中各个函数的特征。
3.根据权利要求2所述的代码保护方法,其特征在于,所述处理步骤还包括,
将抽取代码后的文件记为第二文件,将所述第二文件的权限设置为可读权限、可写权限和可执行权限。
4.根据权利要求3所述的代码保护方法,其特征在于,在要实现所述代码文件的功能时,还包括,
合并步骤,在内存中将所述第一文件和所述第二文件进行合并,进一步包括以下步骤,
利用函数dlopen预加载所述第二文件;
根据所述设定格式,从所述第一文件中获取所述抽取的代码中各个函数的函数名和对应的代码;
利用函数dlsym得到所述各个函数在当前预加载所述第二文件的进程空间中的内存地址;
利用函数memcpy将与所述各个函数对应的代码拷贝到相应的内存地址中,实现所述第一文件和所述第二文件的合并。
5.根据权利要求3所述的代码保护方法,其特征在于,
在所述第二文件中所抽取代码的原位置上,填充不与所抽取代码的值相同的数值。
6.根据权利要求4所述的代码保护方法,其特征在于,
在所述处理步骤中,进一步包括对所述抽取的代码和/或所述第一文件进行加密;
在要实现所述代码文件的功能时,还包括对进行加密的所述抽取的代码和/或所述第一文件进行解密。
7.根据权利要求1所述的代码保护方法,其特征在于,在所述抽取步骤中,进一步包括,
配置第三文件,该文件中包含要抽取的函数名;
根据所述第三文件中的函数名从所述动态库文件中抽取出所要保护的代码。
8.一种Linux操作系统的代码保护模块,其特征在于,包括:
生成单元,其用于将代码文件生成Linux操作系统的动态库文件;
抽取单元,其用于从所述动态库文件中抽取出所要保护的代码;
处理单元,其用于将抽取的代码存放在第一文件中。
9.根据权利要求8所述的代码保护模块,其特征在于,
所述处理单元进一步用于将抽取的代码按照设定格式存放在所述第一文件中,其中,所述设定格式包括头部结构和函数结构,所述头部结构用来表征关于抽取的代码的特征,所述函数结构用来表征关于抽取的代码中各个函数的特征。
10.根据权利要求9所述的代码保护模块,其特征在于,所述处理单元进一步用于,
将抽取代码后的文件记为第二文件,将所述第二文件的权限设置为可读权限、可写权限和可执行权限。
11.根据权利要求10所述的代码保护模块,其特征在于,还包括,
合并单元,在要实现所述代码文件的功能时,其在内存中将所述第一文件和所述第二文件进行合并,进一步用于,
利用函数dlopen预加载所述第二文件;
根据所述设定格式,从第一文件中获取所述抽取的代码中各个函数的函数名和对应的代码;
利用函数dlsym得到所述各个函数在当前预加载所述第二文件的进程空间中的内存地址;
利用函数memcpy将与所述各个函数对应的代码拷贝到相应的内存地址中,实现所述第一文件和所述第二文件的合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310021705.7A CN103136458B (zh) | 2013-01-21 | 2013-01-21 | 一种Linux操作系统动态库代码保护方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310021705.7A CN103136458B (zh) | 2013-01-21 | 2013-01-21 | 一种Linux操作系统动态库代码保护方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103136458A true CN103136458A (zh) | 2013-06-05 |
CN103136458B CN103136458B (zh) | 2016-03-16 |
Family
ID=48496275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310021705.7A Active CN103136458B (zh) | 2013-01-21 | 2013-01-21 | 一种Linux操作系统动态库代码保护方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103136458B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902859A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 基于JAVA下hook技术的代码保护方法及系统 |
CN104834838A (zh) * | 2015-04-29 | 2015-08-12 | 福建天晴数码有限公司 | 防止dex文件从内存中转存的方法及装置 |
CN106126981A (zh) * | 2016-08-30 | 2016-11-16 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
CN106874715A (zh) * | 2016-12-30 | 2017-06-20 | 上海掌门科技有限公司 | 一种防逆向破解的加密方法及系统 |
CN108280329A (zh) * | 2018-01-22 | 2018-07-13 | 台州风达机器人科技有限公司 | 一种用于软件运行的验证放行方法 |
CN108334754A (zh) * | 2018-01-31 | 2018-07-27 | 山东奥太电气有限公司 | 嵌入式系统程序的加密解密方法及系统 |
CN109190336A (zh) * | 2018-08-17 | 2019-01-11 | 中金金融认证中心有限公司 | 一种给安卓应用中的So库加固的方法及系统 |
CN109543433A (zh) * | 2018-11-27 | 2019-03-29 | 网易(杭州)网络有限公司 | 软件开发工具包加密方法、装置、计算机和存储介质 |
CN113268736A (zh) * | 2021-06-24 | 2021-08-17 | 深圳平安智汇企业信息管理有限公司 | 一种信息处理方法、装置及电子设备 |
CN113536242A (zh) * | 2021-07-09 | 2021-10-22 | 深圳市元征未来汽车技术有限公司 | 动态库调用方法、装置、终端设备以及存储介质 |
CN113535263A (zh) * | 2021-07-07 | 2021-10-22 | 深圳市元征未来汽车技术有限公司 | 动态库调用方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020112158A1 (en) * | 2001-02-14 | 2002-08-15 | Golchikov Andrey Vladimirovich | Executable file protection |
CN101706859A (zh) * | 2009-10-20 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 一种源代码保护的装置及方法 |
CN102136053A (zh) * | 2011-03-14 | 2011-07-27 | 中兴通讯股份有限公司 | 对可执行文件源代码保护的方法及装置 |
-
2013
- 2013-01-21 CN CN201310021705.7A patent/CN103136458B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020112158A1 (en) * | 2001-02-14 | 2002-08-15 | Golchikov Andrey Vladimirovich | Executable file protection |
CN101706859A (zh) * | 2009-10-20 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 一种源代码保护的装置及方法 |
CN102136053A (zh) * | 2011-03-14 | 2011-07-27 | 中兴通讯股份有限公司 | 对可执行文件源代码保护的方法及装置 |
Non-Patent Citations (2)
Title |
---|
康晓宁等: "Linux-i386平台可执行文件代码保护技术", 《计算机工程》, vol. 31, no. 4, 28 February 2005 (2005-02-28) * |
罗瑜等: "Linux系统下改进的软件加壳保护技术", 《电子设计工程》, vol. 20, no. 10, 31 May 2012 (2012-05-31), pages 13 - 18 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902859A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 基于JAVA下hook技术的代码保护方法及系统 |
CN104834838A (zh) * | 2015-04-29 | 2015-08-12 | 福建天晴数码有限公司 | 防止dex文件从内存中转存的方法及装置 |
CN104834838B (zh) * | 2015-04-29 | 2017-11-24 | 福建天晴数码有限公司 | 防止dex文件从内存中转存的方法及装置 |
CN106126981B (zh) * | 2016-08-30 | 2019-04-02 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
CN106126981A (zh) * | 2016-08-30 | 2016-11-16 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
CN106874715A (zh) * | 2016-12-30 | 2017-06-20 | 上海掌门科技有限公司 | 一种防逆向破解的加密方法及系统 |
CN108280329A (zh) * | 2018-01-22 | 2018-07-13 | 台州风达机器人科技有限公司 | 一种用于软件运行的验证放行方法 |
CN108280329B (zh) * | 2018-01-22 | 2020-06-02 | 北京数科网维技术有限责任公司 | 一种用于软件运行的验证放行方法 |
CN108334754A (zh) * | 2018-01-31 | 2018-07-27 | 山东奥太电气有限公司 | 嵌入式系统程序的加密解密方法及系统 |
CN108334754B (zh) * | 2018-01-31 | 2020-12-08 | 山东奥太电气有限公司 | 嵌入式系统程序的加密解密方法及系统 |
CN109190336A (zh) * | 2018-08-17 | 2019-01-11 | 中金金融认证中心有限公司 | 一种给安卓应用中的So库加固的方法及系统 |
CN109543433A (zh) * | 2018-11-27 | 2019-03-29 | 网易(杭州)网络有限公司 | 软件开发工具包加密方法、装置、计算机和存储介质 |
CN113268736A (zh) * | 2021-06-24 | 2021-08-17 | 深圳平安智汇企业信息管理有限公司 | 一种信息处理方法、装置及电子设备 |
CN113535263A (zh) * | 2021-07-07 | 2021-10-22 | 深圳市元征未来汽车技术有限公司 | 动态库调用方法、装置、计算机设备及存储介质 |
CN113536242A (zh) * | 2021-07-09 | 2021-10-22 | 深圳市元征未来汽车技术有限公司 | 动态库调用方法、装置、终端设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103136458B (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103136458A (zh) | 一种Linux操作系统的代码保护方法及其模块 | |
CN106529308B (zh) | 一种数据加密方法、装置及移动终端 | |
EP2711859B1 (en) | Secured computing system with asynchronous authentication | |
US8646050B2 (en) | System and method for supporting JIT in a secure system with randomly allocated memory ranges | |
CN109858265A (zh) | 一种加密方法、装置及相关设备 | |
CN104318135B (zh) | 一种基于可信执行环境的Java代码安全动态载入方法 | |
CN110210190A (zh) | 一种基于二次汇编的代码混淆方法 | |
CN108090366B (zh) | 数据保护方法及装置、计算机装置及可读存储介质 | |
CN107851163A (zh) | 用于i/o数据的完整性、防重放和真实性保证的技术 | |
CN106778283A (zh) | 一种系统分区关键数据的保护方法及系统 | |
EP3326105A1 (en) | Technologies for secure programming of a cryptographic engine for secure i/o | |
TWI631462B (zh) | 確保機板上匯流排交易安全的計算系統和計算設備實現的方法以及非暫時性的電腦可讀取媒體 | |
CN103761456B (zh) | 一种单片机核心代码防破解的方法 | |
CN103065082A (zh) | 基于Linux系统的软件安全防护方法 | |
Lisovets et al. | Let’s take it offline: Boosting brute-force attacks on iPhone’s user authentication through SCA | |
WO2016192453A1 (zh) | 一种安全控制方法、装置和终端 | |
CN104463020B (zh) | 存储器数据完整性保护的方法 | |
CN107609410A (zh) | 基于HOOK的Android系统数据保护方法、终端设备及存储介质 | |
CN110659506A (zh) | 基于密钥刷新对存储器进行重放保护 | |
WO2023053101A1 (en) | Systems and methods for malicious code neutralization in execution environments | |
Benadjila et al. | Wookey: Designing a trusted and efficient USB device | |
WO2017067513A1 (zh) | 数据处理方法及存储网关 | |
CN102855439B (zh) | 一种执行文件自校验方法及装置 | |
CN104504310A (zh) | 基于壳技术的软件保护方法和装置 | |
Khelif et al. | A versatile emulator of mitm for the identification of vulnerabilities of iot devices, a case of study: smartphones |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |