CN103246848A - 保护软件安全的方法和设备 - Google Patents

保护软件安全的方法和设备 Download PDF

Info

Publication number
CN103246848A
CN103246848A CN2013100989866A CN201310098986A CN103246848A CN 103246848 A CN103246848 A CN 103246848A CN 2013100989866 A CN2013100989866 A CN 2013100989866A CN 201310098986 A CN201310098986 A CN 201310098986A CN 103246848 A CN103246848 A CN 103246848A
Authority
CN
China
Prior art keywords
derivative function
software
unified
derivative
file
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
Application number
CN2013100989866A
Other languages
English (en)
Other versions
CN103246848B (zh
Inventor
孙吉平
韩勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201310098986.6A priority Critical patent/CN103246848B/zh
Publication of CN103246848A publication Critical patent/CN103246848A/zh
Application granted granted Critical
Publication of CN103246848B publication Critical patent/CN103246848B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种保护软件安全的方法,包括如下步骤:查找步骤:从软件中的动态链接库文件中查找出所有导出函数并建立导出函数表;核对步骤:核对调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将本地方法的相关参数存储于导出函数表中,如果没有对本地方法的调用,则执行替换步骤;改写步骤:生成派遣代码片段,替换可执行文件中的对本地方法的调用的代码:替换步骤:生成统一导出函数,并将所有导出函数的名称替换为统一导出函数的名称,统一导出函数用于跳转到原导出函数。本发明的保护软件安全的方法及系统使软件的接口暴露出的只有统一导出函数,可提高软件反编译和调试的难度,增强软件的安全性。

Description

保护软件安全的方法和设备
技术领域
本发明涉及计算机及通信技术领域,具体涉及一种保护软件安全的方法和设备,加强对可执行文件与本地动态链接库文件之间的接口的安全保护,防止被破坏。
背景技术
很多Java软件都包含一些可执行程序(如.jar,.war或者.class格式的文件)和本地动态链接库文件(如.dll或者.so等格式的文件)。软件在运行时由可执行程序调用动态链接库中的导出接口以执行只有本地代码才能实现的功能。由于它们之间是动态链接,因此导出接口是通过函数名称和函数原形(签名)相关的机制来实现,每一个导出函数都有一个对应的本地(native)方法,在java软件中,可执行程序通过调用本地方法来调用动态链接库中所对应的导出函数。
由于java软件的可执行程序和动态链接库之间的导出接口是以函数名称和函数原形来实现的,这些导出接口所暴露出来的信息很可能被破解者用来探测和发现软件的逻辑和流程,从而对软件实施破坏。而目前的代码保护主要都是单纯保护java软件的可执行程序,或者单纯保护动态链接库中的本地代码,对它们之间的接口缺少保护。
发明内容
本发明所要解决的技术问题是提供一能对软件的可执行程序和动态链接库之间的导出接口进行保护,提高软件安全性的方法和系统。
为了解决上述技术问题,本发明提供了一种保护软件安全的方法,包括如下步骤:
查找步骤:从所述软件中的动态链接库文件中查找出所有导出函数并建立导出函数表;
核对步骤:如果所述软件中的可执行文件中有对本地方法的调用,则核对所述调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将所述本地方法的相关参数存储于所述导出函数表中,如果所述软件中的可执行文件中没有所述对本地方法的调用,则执行下述替换步骤;
改写步骤:生成派遣代码片段,替换所述可执行文件中的对所述本地方法的调用的代码,并返回所述核对步骤,其中所述派遣代码片段用于调用统一导出函数:
替换步骤:生成所述统一导出函数,并将所述动态链接库文件中的所有导出函数的名称替换为所述统一导出函数的名称,所述统一导出函数用于跳转到原导出函数。
本发明同时还提供了一种保护软件安全的设备,包括:
查找模块,用于从所述软件中的动态链接库文件中查找出所有导出函数并建立导出函数表;
核对模块,在确认所述软件中的可执行文件中有对本地方法的调用时,所述核对模块核对所述调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将所述本地方法的相关参数存储于所述导出函数表中;
改写模块,用于生成派遣代码片段,替换所述可执行文件中的对所述本地方法的调用的代码,其中所述派遣代码片段用于调用统一导出函数:
替换模块,当所述核对模块确认所述软件中的可执行文件中没有所述对本地方法的调用时,所述替换模块生成所述统一导出函数,并将所述动态链接库文件中的所有导出函数的名称替换为所述统一导出函数的名称,所述统一导出函数用于跳转到原导出函数。
本发明的有益效果在于:本发明的保护软件安全的方法及系统,通过在动态链接库中插入一个统一导出函数,并将动态链接库中导出函数替换为统一导出函数名称,将可执行文件中调用本地方法代码的部分替换为调用统一函数,将要调用的导出函数的索引值和传入的参数封装为一个字节数组,作为统一导出函数的参数调用,使得软件的接口暴露出的只有统一导出函数,因此根据本发明提供的方法,可以提高软件反编译和调试的难度,增强软件的安全性。
附图说明
图1为现有技术的Java软件的结构框图。
图2为采用本发明的实施例的保护软件安全的方法保护的Java软件的结构框图。
图3为本发明的一个实施例的保护软件安全的方法的流程图。
图4为本发明的另一个实施例的保护软件安全的方法的流程。
图5为本发明的又一个实施例的保护软件安全的设备的结构框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并结合具体的实施例,对本发明进一步详细说明。
Java软件由一个或多个java可执行文件(如.jar、.war或者.class)和一个或者多个本地动态链接库文件(如.dll或者.so等格式)组成。如图1所示的例子中,Java软件包括一个可执行文件a.class和一个本地动态链接库文件b.dll,执行的过程中,java中的可执行文件中的代码会调用动态链接库中导出接口(interface),实现特定的功能。类(class)是java的基本概念,.jar文件中包括多个.class文件(jar包和war包等都是由若干.class文件和资源文件组成),对其不再进行详细描述。
本发明所提供的保护软件安全的方法,包括如下步骤:
查找步骤:从所述软件中的动态链接库文件中查找出所有导出函数并建立导出函数表;
核对步骤:如果所述软件中的可执行文件中有对本地方法的调用,则核对所述调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将所述本地方法的相关参数存储于所述导出函数表中,如果所述软件中的可执行文件中没有所述对本地方法的调用,则执行下述替换步骤;
改写步骤:生成派遣代码片段,替换所述可执行文件中的对所述本地方法的调用的代码,并返回所述核对步骤,其中所述派遣代码片段用于调用统一导出函数:
替换步骤:生成所述统一导出函数,并将所述动态链接库文件中的所有导出函数的名称替换为所述统一导出函数的名称,所述统一导出函数用于跳转到原导出函数。
具体地,请参考图3所示的流程图并参考图2所示的框图详细说明发明的保护软件安全的方法的一个实施方式的详细工作过程。如图3所示,本发明的保护软件安全的方法一种实施方式,包括如下步骤:
S1:枚举所述软件中的动态链接库文件,如果找到动态链接库文件则执行S2,如果该软件中无动态链接库文件,则结束;如果软件中没有动态链接库文件,则不需要进行接口保护,这是显然的。如果软件中包括动态链接库文件,就采用本发明的方法进行保护。
S2:查找动态链接库文件中所有导出函数,为每个导出函数分配一个索引建立导出函数表,并将导出函数的名称与索引对应存储,然后执行S3。在S2步骤中,建立了导出函数表,在软件执行阶段,通过从该导出函数表中按照导出函数的索引值找到相应的导出函数,还原到本来的导出函数。
S3:在图3所示的具体实施例的流程图中,步骤S3被细分成两个步骤:S31:枚举所述软件中的可执行文件,并查找其中一个所述可执行文件中是否有对本地方法的调用,查找完毕时,执行步骤S32的判断步骤,S32如果有对本地方法的调用,则执行步骤S4,如果无对本地方法的调用,执行步骤S7。此步骤中,如果可执行文件中无本地方法调用,显然也不必再进行下面的步骤。
S4:检查要调用的本地方法所对应的导出函数的名称是否在步骤S2中的导出函数表中,如果在,执行步骤S5,否则执行步骤S3,以继续查找下一个对本地方法的调用。
S5:根据可执行文件中记录的所述本地方法的签名获得该本地方法的返回值和参数类型,并将本地方法的相关参数,包括签名、返回值和参数类型对应地存储于步骤S2中的导出函数表中,然后执行S6。通过步骤S4和S5,使得可执行文件中记录的所述本地方法与动态链接库文件中的导出函数一一对应,并以数据库的表的形式或者以文件的形式存储,可插入动态链接库中。
S6:生成派遣代码片段,替换所述可执行文件中的对本地方法的调用的代码,所述派遣代码片段的功能是调用统一导出函数,并将所述统一导出函数所代替的原导出函数在所述导出函数表中的索引及所传入的参数封装为一个字节数组作为所述统一导出函数的参数,在步骤S6完成之后,返回执行步骤S3,以继续查找下一个对本地方法的调用。通过步骤S6,使可执行文件中的对本地方法的调用的代码被取消,派遣代码片段的功能是调用统一导出函数,该统一导出函数为统一的名称,统一导出函数的参数是字节数组,从其名称和参数上看不出其逻辑结构,也无从破解。
S7:生成统一的统一导出函数,并将所述动态链接库文件中的所有导出函数的名称替换为所述统一导出函数的名称,所述统一导出函数的功能是从其参数中提取出原导出函数的索引和原导出函数的参数,然后跳转到原导出函数。步骤S7和步骤S6是对应设置的,在动态链接库文件中只保存统一的统一导出函数,原有的导出函数的名称全部被取代,破解者从动态链接库文件和可执行文件中均找不到导出函数的名称和实际参数,无从猜测其逻辑结构,从而增加了软件反编译和调试的难度,增强软件的安全性。动态链接库文件和可执行文件中之间通过导出函数的索引值联系。
如图3所示,为进一步增加其安全性,在步骤S7之后,执行步骤S8:将所述动态链接库文件中的原导出函数修改为不可导出。
在图3所示的实施例中,在步骤S8之后,增加步骤S9:判断动态链接库文件是否查找完毕的步骤,如果查找完毕,就结束,如果动态链接库文件还未查找完毕,则继续查找,并对回到步骤S2,对下一个动态链接库文件执行同样的步骤。
为了增强软件的安全性,作为优选,在步骤S6中还包括将所述字节数组加密的步骤。在步骤S2或S5中还包括对所述导出函数表加密的步骤。通过加密,增强软件被破解的难度,即使第三方恶意软件找到了所要保护软件的导出函数表,也无从下手。
以下结合图1、图2和图3,详细说明采用发明的保护软件安全的方法进行保护后的JAVA软件的详细运行过程。如图1所示,该JAVA软件中,可执行文件a.class中存在两处native(本地)方法调用,其功能是分别调用从动态链接库文件b.dll中导出两个函数funAbs(int),和funMul(int,int),以执行求绝对值和乘法的功能。显然,取绝对值的函数包括一个参数,其数据类型为int,乘法函数包括两个int参数。在动态链接库文件b.dll中包括两个导出函数,分别用于导出函数int funAbs(int)和int funMul(int,int),分别完成特定的功能(取绝对值和乘法)。如图2所示,采用本发明的保护软件安全的方法的进行保护后,图1所示的Java程序中的可执行文件a.class中对本地方法调用的代码被一段派遣代码代替,该派遣代码的功能是调用统一导出函数,并将所述统一导出函数所代替的原导出函数在所述导出函数表中的索引及所传入的参数封装为一个字节数组作为所述统一导出函数的参数。在本地动态链接库文件b.dll中,增加有导出函数表,导出函数表的形式如表1所示,为每个导出的函数分配一个索引值,并与本地方法对应。
表1导出函数表
Figure BDA00002966362300071
参见图2,系统运行时,分析b.dll,表1所示的数据库表中的导出函数表,表1中第一项为funAbs,第二项为funMul,然后分析a.class文件,通过分析发现两处native方法调用,获取到funAbs和funMul的函数原形(签名);将两处native调用的代码改为调用intFun(char[]),其中字节数组部分是由索引值和函数的参数组合而成,具体为索引值1对应funAbs的参数(一个int类型)、索引2对应funMul的参数(两个int类型)。
在b.dll中增加一个导出函数int Fun(char[]),其功能是分析字节数组,提取出索引值和原参数,并根据索引值跳转到原来的函数funAbs或funMul,并将原来的funAbs和funMul函数的属性修改为不可导出(函数代码不变,但不再是可导出的函数),此两个函数的名称从b.dll中抹去。
该Java软件运行时,从b.dll中查找导出函数int Fun(char[]),分析字节数组,提取出索引值和原参数,并根据索引值从导出函数表中找到原来的函数funAbs或funMul,跳转到原来的函数funAbs或funMul,然后将字节数组中的原参数(即传入的参数)取出,执行相应的函数funAbs或funMul功能,本实施例中,即是执行取绝对值或乘法的功能。
从上面的描述可以看出,在该Java软件的程序文件中,将不再有funAbs和funMul这样的可执行具体功能的函数的函数名称,模块间暴露出的接口只有统一的导出函数名称int Fun(char[]),破解者很难从这个接口中看出软件的功能、结构和流程,还可以对字节数组参数进行加密,进一步提高软件的保护强度。
当所述要保护的软件为java软件,所述动态链接库文件是.dll或者.so格式的文件;所述可执行文件为.class、jar或.war格式的文件。当可执行文件为jar或.war格式时,需要从其中提出.class文件,然后再进行相应的处理。
本发明将受保护的java软件中所有的导出接口都替换为统一导出函数,且只有一个参数,为字节数组。这个统一导出函数是由手动或者工具自动插入到动态链接库文件中。同时,将受保护软件中所有可执行文件调用动态链接库中导出函数的代码,都替换为一段派遣代码,该派遣代码调用统一导出函数,将要希望调用的导出函数索引值和传入的参数封装为一个字节数组作为新的调用方法的参数传入。将本地动态链接库中原有的导出函数修改为不可导出(原导出函数代码不变,但不再是可导出的),并从文件中去掉函数名。(将原导出函数的属性修改为不可导出,将原函数名替换为统一导出函数名称)
本方法不仅适用于Windows平台,也适用于其他使用动态库机制的操作系统。其他操作系统使用时,方法步骤与windows平台步骤基本相同,此处不再赘述。
需要指出的是,在图3所示的实施例中,判断动态链接库文件是否查找完毕的步骤S9,还可以在步骤S2和S31之间进行,即判断动态链接库文件是否查找完毕,如果查找完毕,则进行步骤S31,否则,进行动态链接库文件,并将其中的导出函数的名称放入导出函数表中。
图4示出了实现本发明的保护软件安全的方法的另外一种实施方式,本实施例与图3所示的实施例的区别在于,在查找步骤S100中,并列进行对动态链接库文件和可执行文件进行处理,即对动态链接库文件执行步骤S11和S12,S11:枚举动态链接库文件,
S12:查找动态链接库文件中所有导出函数,将导出函数的名称填写到导出函数表,将导出函数表插入到动态链接库文件中
对可执行文件执行步骤S21和S22:
S21:枚举可执行文件,S22:查找所有可执行文件中对本地方法的调用。
在执行查找步骤S100后,执行核对步骤S200:如果所述软件中的可执行文件中有对本地方法的调用,则核对所述调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将所述本地方法的相关参数存储于所述导出函数表中,如果所述软件中的可执行文件中没有所述对本地方法的调用,则执行下述替换步骤S300。
在替换步骤S300中,分别对动态链接库文件和可执行文件进行处理,对动态链接库文件执行步骤S15和S16,对可执行文件执行步骤S25。其中:
S15:生成统一导出函数并插入到动态链接库文件中,用统一导出函数的名称代替掉原导出函数的名称,
S16:将动态链接库中原有的导出函数改为不可导出。
S25:生成派遣代码片段,替换可执行文件中调用本地方法的代码,其中派遣代码片段上文中的派遣代码片段的作用相同。
如图5所示,本发明还提供了一种保护软件安全的设备,包括:
查找模块401,用于从所述软件中的动态链接库文件中查找出所有导出函数并建立导出函数表;
核对模块402,在确认所述软件中的可执行文件中有对本地方法的调用时,所述核对模块核对所述调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将所述本地方法的相关参数存储于所述导出函数表中;
改写模块403,用于生成派遣代码片段,替换所述可执行文件中的对所述本地方法的调用的代码,其中所述派遣代码片段用于调用统一导出函数:
替换模块404,当所述核对模块确认所述软件中的可执行文件中没有所述对本地方法的调用时,所述替换模块生成所述统一导出函数,并将所述动态链接库文件中的所有导出函数的名称替换为所述统一导出函数的名称,所述统一导出函数用于跳转到原导出函数。
作为优选,本实施例的保护软件安全的设备还包括加密模块405,用于对替换模块404中的所述统一导出函数的参数进行加密。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (12)

1.一种保护软件安全的方法,其特征在于,包括如下步骤:
查找步骤:从所述软件中的动态链接库文件中查找出所有导出函数并建立导出函数表;
核对步骤:如果所述软件中的可执行文件中有对本地方法的调用,则核对所述调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将所述本地方法的相关参数存储于所述导出函数表中,如果所述软件中的可执行文件中没有所述对本地方法的调用,则执行下述替换步骤;
改写步骤:生成派遣代码片段,替换所述可执行文件中的对所述本地方法的调用的代码,并返回所述核对步骤,其中所述派遣代码片段用于调用统一导出函数:
替换步骤:生成所述统一导出函数,并将所述动态链接库文件中的所有导出函数的名称替换为所述统一导出函数的名称,所述统一导出函数用于跳转到原导出函数。
2.如权利要求1所述的保护软件安全的方法,其特征在于,在所述查找步骤中:
为每个导出函数分配一个索引值以建立所述导出函数表,并将导出函数的名称与索引值对应存储,所述导出函数表以数据库的表的形式或者以文件的形式存储。
3.如权利要求1所述的保护软件安全的方法,其特征在于,在所述核对步骤中:
如果核对所述调用所对应的导出函数的名称不在所述导出函数表中,则继续查找所述软件中的可执行文件中的下一个对本地方法的调用。
4.如权利要求1所述的保护软件安全的方法,其特征在于,在所述核对步骤中:
所述本地方法的相关参数包括签名、返回值和参数类型,其中,根据可执行文件中记录的所述本地方法的签名获得该本地方法的返回值和参数类型。
5.如权利要求1所述的保护软件安全的方法,其特征在于,在所述改写步骤中:
所述派遣代码片段将所述统一导出函数所代替的原导出函数在所述导出函数表中的索引值及所传入的参数封装为一个字节数组作为所述统一导出函数的参数。
6.如权利要求1所述的保护软件安全的方法,其特征在于,在所述替换步骤中:
所述统一导出函数从其参数中提取出原导出函数的索引值和原导出函数的参数,然后跳转到原导出函数。
7.如权利要求1所述的保护软件安全的方法,其特征在于,
在所述替换步骤之后,执行属性修改步骤:将所述动态链接库文件中的原导出函数的属性修改为不可导出。
8.如权利要求5所述的保护软件安全的方法,其特征在于,在所述改写步骤中,还包括将所述字节数组加密的步骤。
9.如权利要求2或3所述的保护软件安全的方法,其特征在于,在所述查找步骤或所述核对步骤中还包括对所述导出函数表加密的步骤。
10.如权利要求1所述的保护软件安全的方法,其特征在于,所述要保护的软件为java软件,所述动态链接库文件包括.dll或者.so格式的文件,所述可执行文件包括.class、jar或.war格式的文件。
11.一种保护软件安全的设备,其特征在于,包括:
查找模块,用于从所述软件中的动态链接库文件中查找出所有导出函数并建立导出函数表;
核对模块,在确认所述软件中的可执行文件中有对本地方法的调用时,所述核对模块核对所述调用所对应的导出函数的名称是否在上述导出函数表中,如在,则将所述本地方法的相关参数存储于所述导出函数表中;
改写模块,用于生成派遣代码片段,替换所述可执行文件中的对所述本地方法的调用的代码,其中所述派遣代码片段用于调用统一导出函数:
替换模块,当所述核对模块确认所述软件中的可执行文件中没有所述对本地方法的调用时,所述替换模块生成所述统一导出函数,并将所述动态链接库文件中的所有导出函数的名称替换为所述统一导出函数的名称,所述统一导出函数用于跳转到原导出函数。
12.如权利要求11所述的保护软件安全的设备,其特征在于,还包括加密模块,用于对所述统一导出函数的参数进行加密。
CN201310098986.6A 2013-03-26 2013-03-26 保护软件安全的方法和设备 Active CN103246848B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310098986.6A CN103246848B (zh) 2013-03-26 2013-03-26 保护软件安全的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310098986.6A CN103246848B (zh) 2013-03-26 2013-03-26 保护软件安全的方法和设备

Publications (2)

Publication Number Publication Date
CN103246848A true CN103246848A (zh) 2013-08-14
CN103246848B CN103246848B (zh) 2016-05-18

Family

ID=48926362

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310098986.6A Active CN103246848B (zh) 2013-03-26 2013-03-26 保护软件安全的方法和设备

Country Status (1)

Country Link
CN (1) CN103246848B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678961A (zh) * 2013-11-07 2014-03-26 北京深思数盾科技有限公司 代码动态生成的方法
CN104573416A (zh) * 2013-10-25 2015-04-29 腾讯科技(深圳)有限公司 一种生成应用安装包、执行应用的方法及装置
CN104866740A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种防静态分析文件的方法及装置
CN106371940A (zh) * 2015-07-21 2017-02-01 腾讯科技(深圳)有限公司 一种程序崩溃解决方法及装置
CN106412102A (zh) * 2016-10-28 2017-02-15 努比亚技术有限公司 一种防止应用被反编译的装置和方法
CN106897588A (zh) * 2017-03-15 2017-06-27 北京深思数盾科技股份有限公司 一种标签函数的处理方法及装置
CN106897089A (zh) * 2017-01-19 2017-06-27 上海帝联信息科技股份有限公司 系统操作执行方法及装置
CN107273745A (zh) * 2017-04-21 2017-10-20 中国科学院软件研究所 一种动态链接库形式的恶意代码的动态分析方法
CN108259429A (zh) * 2016-12-29 2018-07-06 航天信息股份有限公司 一种针对软件分发进行控制的方法和系统
CN108932407A (zh) * 2018-05-22 2018-12-04 北京奇虎科技有限公司 一种程序安全保护方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1945589A (zh) * 2006-10-16 2007-04-11 珠海金山软件股份有限公司 一种Windows平台下保护动态链接库接口的方法
CN101702130A (zh) * 2009-11-12 2010-05-05 深圳市五巨科技有限公司 一种移动终端加载共享函数库的方法和装置
WO2012095515A1 (en) * 2011-01-14 2012-07-19 Wibu-Systems Ag Method for protecting an application program and related computer program product
CN102938036A (zh) * 2011-11-29 2013-02-20 Ut斯达康通讯有限公司 Windows动态链接库的分段双重加密及安全加载方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1945589A (zh) * 2006-10-16 2007-04-11 珠海金山软件股份有限公司 一种Windows平台下保护动态链接库接口的方法
CN101702130A (zh) * 2009-11-12 2010-05-05 深圳市五巨科技有限公司 一种移动终端加载共享函数库的方法和装置
WO2012095515A1 (en) * 2011-01-14 2012-07-19 Wibu-Systems Ag Method for protecting an application program and related computer program product
CN102938036A (zh) * 2011-11-29 2013-02-20 Ut斯达康通讯有限公司 Windows动态链接库的分段双重加密及安全加载方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573416B (zh) * 2013-10-25 2018-07-17 腾讯科技(深圳)有限公司 一种生成应用安装包、执行应用的方法及装置
CN104573416A (zh) * 2013-10-25 2015-04-29 腾讯科技(深圳)有限公司 一种生成应用安装包、执行应用的方法及装置
CN103678961B (zh) * 2013-11-07 2016-07-06 北京深思数盾科技股份有限公司 代码动态生成的方法
CN103678961A (zh) * 2013-11-07 2014-03-26 北京深思数盾科技有限公司 代码动态生成的方法
CN104866740A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种防静态分析文件的方法及装置
CN106371940B (zh) * 2015-07-21 2020-02-11 腾讯科技(深圳)有限公司 一种程序崩溃解决方法及装置
CN106371940A (zh) * 2015-07-21 2017-02-01 腾讯科技(深圳)有限公司 一种程序崩溃解决方法及装置
CN106412102A (zh) * 2016-10-28 2017-02-15 努比亚技术有限公司 一种防止应用被反编译的装置和方法
CN108259429A (zh) * 2016-12-29 2018-07-06 航天信息股份有限公司 一种针对软件分发进行控制的方法和系统
CN108259429B (zh) * 2016-12-29 2021-01-29 航天信息股份有限公司 一种针对软件分发进行控制的方法和系统
CN106897089A (zh) * 2017-01-19 2017-06-27 上海帝联信息科技股份有限公司 系统操作执行方法及装置
CN106897089B (zh) * 2017-01-19 2020-04-03 上海帝联信息科技股份有限公司 系统操作执行方法及装置
CN106897588A (zh) * 2017-03-15 2017-06-27 北京深思数盾科技股份有限公司 一种标签函数的处理方法及装置
CN106897588B (zh) * 2017-03-15 2020-02-14 北京深思数盾科技股份有限公司 一种标签函数的处理方法及装置
CN107273745A (zh) * 2017-04-21 2017-10-20 中国科学院软件研究所 一种动态链接库形式的恶意代码的动态分析方法
CN107273745B (zh) * 2017-04-21 2020-08-21 中国科学院软件研究所 一种动态链接库形式的恶意代码的动态分析方法
CN108932407A (zh) * 2018-05-22 2018-12-04 北京奇虎科技有限公司 一种程序安全保护方法及装置
CN108932407B (zh) * 2018-05-22 2022-01-25 北京奇虎科技有限公司 一种程序安全保护方法及装置

Also Published As

Publication number Publication date
CN103246848B (zh) 2016-05-18

Similar Documents

Publication Publication Date Title
CN103246848A (zh) 保护软件安全的方法和设备
Backes et al. Reliable third-party library detection in android and its security applications
Desnos Android: Static analysis using similarity distance
Dietrich et al. Broken promises: An empirical study into evolution problems in java programs caused by library upgrades
CN106371940B (zh) 一种程序崩溃解决方法及装置
CN105046116B (zh) Android系统中保护dex文件不被反编译的方法
Felt et al. Android permissions demystified
Lin et al. Automated forensic analysis of mobile applications on Android devices
CN108491235B (zh) 结合动态加载和函数Native化的DEX保护方法
CN103186730A (zh) 保护.net软件安全的方法和设备
CN103713902B (zh) 一种基于Android系统的BOA编译方法和系统
CN101261664B (zh) 一种使用软件保护装置存储程序代码实现软件保护的方法
CN105683990A (zh) 用于保护动态库的方法和装置
CN105653432A (zh) 一种崩溃数据的处理方法和装置
CN101189617A (zh) 电子设备、更新服务器装置、密钥更新装置
Calciati et al. What did really change with the new release of the app?
CN108229112A (zh) 一种保护应用程序、应用程序的运行方法以及装置
CN111190603B (zh) 一种隐私数据检测方法、装置和计算机可读存储介质
CN114021142A (zh) 一种安卓应用程序漏洞检测方法
CN104866734A (zh) 一种dex文件的保护方法及装置
CN109241707A (zh) 应用程序的混淆方法、装置和服务器
Balliu et al. Challenges of producing software bill of materials for java
CN109255235A (zh) 基于用户态沙箱的移动应用第三方库隔离方法
CN105577720B (zh) 移动应用打包的方法及系统
US20210406004A1 (en) System and method for implementing a code audit tool

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP02 Change in the address of a patent holder

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Patentee after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder