CN107391970A - Flash应用程序中的函数访问控制方法及装置 - Google Patents
Flash应用程序中的函数访问控制方法及装置 Download PDFInfo
- Publication number
- CN107391970A CN107391970A CN201710423552.7A CN201710423552A CN107391970A CN 107391970 A CN107391970 A CN 107391970A CN 201710423552 A CN201710423552 A CN 201710423552A CN 107391970 A CN107391970 A CN 107391970A
- Authority
- CN
- China
- Prior art keywords
- function
- value
- hash values
- application programs
- verified
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000010200 validation analysis Methods 0.000 claims abstract description 50
- 230000006870 function Effects 0.000 claims description 303
- 238000004422 calculation algorithm Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 2
- 241000208340 Araliaceae Species 0.000 claims 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 2
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 2
- 235000008434 ginseng Nutrition 0.000 claims 2
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000011514 reflex Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 1
- 230000004217 heart function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- 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/128—Restricting unauthorised execution of programs involving web programs, i.e. using technology especially used in internet, generally interacting with a web browser, e.g. hypertext markup language [HTML], applets, java
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供了一种Flash应用程序中的函数访问控制方法及装置,其中,该方法包括:获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,目标函数配置有函数访问验证信息,函数访问验证信息包括函数验证值和函数标准值,函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值;计算所述当前调用堆栈信息对应的实时HASH值;根据函数验证值和函数标准值对实时HASH值进行验证;若验证失败,则终止目标函数的执行。本发明实施例提供的Flash应用程序中的函数访问控制方法及装置,能够有效地保护Flash应用程序的核心函数,防止其被第三方程序非法访问。
Description
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种Flash应用程序中的函数访问控制方法及装置。
背景技术
目前,Flash被广泛的用于网页设计、网页动画制作及网页视频播放等技术领域。大多数的视频网站包括直播网站都采用Flash作为其视频播放器,并且大多数的网页游戏也会使用Flash来开发。
Flash是使用ActionScript脚本语言来开发的,由于其脚本语言的特性,导致其非常容易被反编译,从而可以从最终发布的SWF文件中反编译查看其源码,并寻找其各个功能接口及接口的使用方法。其中SWF文件是Flash的执行文件。同时,由于Flash具有反射机制的原理,从而可以从最终发布的SWF文件中获取到SWF文件的所有函数接口,通过反射机制则可以调用其函数接口功能,第三方程序则可以直接使用该SWF的功能。例如,Flash中会使用资源文件,而通常资源文件是使用加密后在网络中传输,而当Flash使用资源文件时,则会先对资源文件进行解密,解密后才能正常使用。那么在Flash的SWF文件中则会编写相应的资源文件解密接口。而HACK则可以先直接获取SWF文件,然后通过反编译来查看SWF文件的解密接口,然后通过反射机制直接调用该接口来实现对资源文件的解密,从而可以获取到原始的资源文件。
因此,如何提供一种能够保护Flash应用程序的接口函数,防止其被其他第三方程序直接使用的函数访问控制方法具有重要意义。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的Flash应用程序中的函数访问控制方法及装置。
本发明的一个方面,提供了一种Flash应用程序中的函数访问控制方法,包括:
获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,所述目标函数配置有函数访问验证信息,所述函数访问验证信息包括函数验证值和函数标准值,所述函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,所述目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值;
计算所述当前调用堆栈信息对应的实时HASH值;
根据所述函数验证值和函数标准值对所述实时HASH值进行验证;
若验证失败,则终止所述目标函数的执行。
其中,所述根据所述函数验证值和函数标准值对所述实时HASH值进行验证,包括:
将所述实时HASH值作为所述加密算法的KEY值对所述函数标准值进行加密,得到第一待验证参数,对所述第一待验证参数与所述函数验证值进行比较,若所述第一待验证参数与所述函数验证值不一致,则确认验证失败,或,
将所述实时HASH值作为对应的解密算法的KEY值对所述函数验证值进行解密,得到第二待验证参数,对所述第二待验证参数与所述函数标准值进行比较,若所述第二待验证参数与所述函数标准值不一致,则确认验证失败。
其中,在所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息之前,还包括:
判断所述目标函数是否属于预先指定的核心函数;
若所述目标函数属于预先指定的核心函数,则执行所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息的步骤。
其中,所述预先指定的核心函数包括资源解密函数、数据加解密函数和用户指定的函数。
其中,所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,包括:
调用预先添加在所述目标函数指定位置的Flash功能函数获取所述当前调用堆栈信息,所述Flash功能函数为预先编写的用于获取函数调用堆栈信息的函数。
其中,在所述终止所述目标函数的执行之后,还包括:
生成非法调用提示信息,将所述非法调用提示信息上报服务器。
本发明的另一个方面,提供了一种Flash应用程序中的函数访问控制装置,包括:
获取模块,用于获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,所述目标函数配置有函数访问验证信息,所述函数访问验证信息包括函数验证值和函数标准值,所述函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,所述目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值;
运算模块,用于计算所述当前调用堆栈信息对应的实时HASH值;
验证模块,用于根据所述函数验证值和函数标准值对所述实时HASH值进行验证;
控制模块,用于当所述验证模块的验证结果为失败时,终止所述目标函数的执行。
其中,所述验证模块,具体用于将所述实时HASH值作为所述加密算法的KEY值对所述函数标准值进行加密,得到第一待验证参数,对所述第一待验证参数与所述函数验证值进行比较,若所述第一待验证参数与所述函数验证值不一致,则确认验证失败,或,
将所述实时HASH值作为对应的解密算法的KEY值对所述函数验证值进行解密,得到第二待验证参数,对所述第二待验证参数与所述函数标准值进行比较,若所述第二待验证参数与所述函数标准值不一致,则确认验证失败。
此外,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法的步骤。
此外,本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述方法的步骤。
本发明实施例提供的Flash应用程序中的函数访问控制方法及装置,通过获取Flash的核心函数的当前调用堆栈信息并计算其HASH值,然后通过该函数对应的函数访问验证信息中的函数验证值和函数标准值对当前调用堆栈信息的HASH值进行验证,若验证通过则正常的执行该函数的功能,否则终止执行该函数的功能,本发明实施例能够有效地保护Flash应用程序的核心函数,防止其被其他第三方程序非法访问,提升用户体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例的一种Flash应用程序中的函数访问控制方法的流程图;
图2为本发明实施例的另一种Flash应用程序中的函数访问控制方法的流程图;
图3为本发明实施例的一种Flash应用程序中的函数访问控制装置的结构示意图;
图4为本发明实施例的计算机设备的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1示意性示出了本发明一个实施例的Flash应用程序中的函数访问控制方法的流程图。参照图1,本发明实施例的Flash应用程序中的函数访问控制方法具体包括以下步骤:
步骤S11、获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,所述目标函数配置有函数访问验证信息,所述函数访问验证信息包括函数验证值和函数标准值,所述函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,所述目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值。常见的Hash算法包括MD5和SHA算法。
其中,调用堆栈信息为函数的调用链,即从第一个函数到当前被调用的目标函数的所有函数的函数名,是按照先后顺序排序的。在定位程序错误的问题时,能够找到程序是从哪个函数最先调用过来的,从而找到函数调用的起始函数。对于Flash本身的功能函数其调用堆栈信息是固定的。
其中,函数访问验证信息,即为目标函数预先设置的2个全局变量,一个赋值为加密后的值即函数验证值,另一个赋值为不加密的原始值即函数标准值。
由于对于Flash本身的功能函数其调用函数堆栈是固定的,因此本发明实施例通过获取Flash应用程序中功能函数的调用堆栈信息,将调用堆栈信息进行HASH计算后,采用得到的HASH值作为加、解密算法的KEY值,如果该KEY值是正确的,才能正确的解密,该目标函数才能正确执行,如果是错误的则解密的值是错误的,则目标函数无法正确的执行。
步骤S12、计算所述当前调用堆栈信息对应的实时HASH值。
步骤S13、根据所述函数验证值和函数标准值对所述实时HASH值进行验证。
步骤S14、若验证失败,则终止所述目标函数的执行。
本发明实施例提供了一种Flash应用程序中的函数访问控制方法,来保护Flash的接口函数,防止其被第三方程序非法调用。对于被访问的目标函数,加入对该函数的调用堆栈信息的获取,从而得到该函数的合法的调用堆栈信息,然后使用MD5函数来计算调用堆栈信息的HASH值,并将HASH值作为加、解密算法的KEY值。当目标函数被执行时,获取其当前调用堆栈信息,并使用MD5算法计算当前调用堆栈信息对应的实时HASH值,得到加、解密算法的KEY值,根据所述函数验证值和函数标准值对该KEY值进行校验,使用该KEY值加、解密对应全局变量的值,并判断全局变量中两个值是否一致,如果一致说明是合法的调用,则可以正确的调用该函数,否则不一致则说明是非法调用,则终止该函数的执行。
其中,根据所述函数验证值和函数标准值对该KEY值进行校验的具体实现步骤包括:将所述实时HASH值作为所述加密算法的KEY值对所述函数标准值进行加密,得到第一待验证参数,对所述第一待验证参数与所述函数验证值进行比较,若所述第一待验证参数与所述函数验证值不一致,则确认验证失败,或,将所述实时HASH值作为对应的解密算法的KEY值对所述函数验证值进行解密,得到第二待验证参数,对所述第二待验证参数与所述函数标准值进行比较,若所述第二待验证参数与所述函数标准值不一致,则确认验证失败。
进一步地,本发明实施例提供的防止Flash应用程序中函数非法调用的方法,在所述终止所述目标函数的执行之后,还包括:
生成非法调用提示信息,将所述非法调用提示信息上报服务器。
本发明实施例,对于是非法的函数调用,还可以生成非法调用提示信息,将此信息告知服务器,说明当前客户端存在非法的调用核心函数,从而服务器可以对该用户进行相应的惩罚措施。
在本实施例中,如图2所示,在所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息之前,还包括:
步骤S10、判断所述目标函数是否属于预先指定的核心函数,其中,所述预先指定的核心函数包括资源解密函数、数据加解密函数和用户指定的函数。
若所述目标函数属于预先指定的核心函数,则执行所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息的步骤。
由于对函数的保护需要消耗性能和需要对该函数编写相应的代码,因此,为了减少***性能消耗和过多的代码编辑,本发明实施例中,首先会从Flash代码中挑选一些核心的函数,对这些核心函数进行保护。具体的,通过只对预先指定的核心函数进行保护,实现对重点函数的保护。其他不重要的函数则可以不对其进行保护。其中,在Flash的现有函数中挑选关键的核心函数,主要包括从Flash的现有函数中挑选资源解密函数,数据加解密函数,或者是Flash程序中用户所指定的比较重要的函数,实现从Flash中挑选出一些关键核心的函数来进行后续的保护逻辑。
相应的,在获取Flash应用程序中被调用的目标函数的当前调用堆栈信息之前,需要判断该目标函数是否属于预先指定的核心函数,若被调用的目标函数是核心函数,则对其进行调用堆栈信息的获取。
本实施例中,所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,包括:调用预先添加在所述目标函数指定位置的Flash功能函数获取所述当前调用堆栈信息,所述Flash功能函数为预先编写的用于获取函数调用堆栈信息的函数。
在一个具体实施例中,首先,编写获取函数调用堆栈信息的功能函数。具体实现如下:通过使用Flash提供的组件函数来获取当前函数的调用堆栈信息,从而为后续的获取目标函数的调用堆栈信息提供支持。接口函数命名为GetFunctionStack,具体实现如下:
String GetFunctionStack()
{
varcurError:Error=new Error();
首先定义一个Error组件curError。
varstackTrace:String=curError.getStackTrace();
Return stackTrace;
}
然后,通过Error组件的接口函数getStackTrace来获取当前函数的调用堆栈信息。可见,在其他任何函数中调用这个接口函数则可以获取到相应函数的整个调用堆栈信息。
其中,stackTrace中则存储着堆栈信息。
之后,在Flash的每个核心函数中调用上述接口函数GetFunctionStack来获取堆栈信息。
在上述步骤中,已经挑选了一些核心函数,在此步骤中则会在每个核心函数中函数开始的地方去调用之前编写的接口函数来获取当前函数的调用堆栈信息。
得到堆栈信息后,使用MD5函数来计算其HASH值。具体如下:
String stackInfo=GetFunctionStack();
通过在核心函数中调用该函数来获取当前函数的调用堆栈信息。
KEY=MD5.Create(stackInfo);
然后,使用MD5函数来对该堆栈信息stackInfo计算其MD5值。从而得到一个KEY值,实现对每个核心函数获取其堆栈信息并计算其MD5值得到一个KEY值。
本发明实施例中,由于堆栈信息是一些函数名称所以比较容易破解其数据的具体内容,而MD5值则是一堆字符串没有任何含义,因此,通过对调用堆栈信息进行HASH值计算,使得堆栈信息进行隐藏。
在一个具体实施例中,为目标函数配置函数访问验证信息的实现过程具体如下:
首先会对每个核心函数生成一对随机值的全局变量,并使用加密算法TEA来对一对变量中的一个值进行加密,而加密算法使用的KEY值则是目标函数在Flash应用程序中对应的标准调用堆栈信息的目标HASH值,从而一对全局变量中一个是原始值,一个是加密算法TEA加密后的值。具体实现如下:
Char g_datasrc[]=rand();
Char g_dataencrypt[]=g_datasrc;
生成2个全局变量,一个是g_datasrc另一个是g_dataencrypt,并且使用随机算法对该2个变量赋值。
TEA.encrypt(g_dataencrypt,KEY);
然后使用加密算法TEA来对其中一个变量进行加密,加密的KEY值则是由目标函数的调用堆栈信息计算MD5后的目标HASH值。
当Flash程序执行时,如果当前调用的函数是一个核心函数,那么在核心函数中会获取当前的调用堆栈信息,获取到调用堆栈信息,然后会对堆栈信息计算其MD5值做为解密算法TEA的KEY值,然后使用TEA算法来对全局变量g_dataencrypt来进行解密,解密后则会判断该值是否和g_datasrc一致,如果一致则说明其KEY值是正确的,从而可以说明获取的堆栈信息是合法的,从而正常的执行该函数的逻辑,否则是一个异常的调用堆栈,从而可以终止该函数的继续执行。具体实现如下:
String stackinfo=GetFunctionStack();
获取当前函数的调用堆栈信息。
KEY=MD5.Create(stackInfo);
使用MD5函数来对堆栈信息计算其MD5结果。
TEA.decrypt(g_dataencrypt,KEY);
使用TEA算法来对加密后的全局变量g_dataencrypt来进行解密。
If g_dataencrypt=g_datasrc
如果2个值相等则是合法调用。
Else
2个值不相等则说明是非法调用。
同时对于是非法的调用堆栈还可以将此信息告知服务器,说明当前客户端存在非法的调用核心函数,从而服务器可以对该用户进行相应的惩罚措施。进而实现了在Flash的关键函数中获取当前堆栈并对堆栈信息来计算其MD5值做为全局变量的解密算法的KEY值,并且使用该KEY值来解密全局变量的值,如果解密的值是正确的则说明调用堆栈信息是合法的则正常的执行核心函数的功能,否则终止执行该核心函数的功能。
本发明实施例提供的Flash应用程序中的函数访问控制方法,通过获取Flash的核心函数的当前调用堆栈信息并计算其HASH值,然后通过该函数对应的函数访问验证信息中的函数验证值和函数标准值对当前调用堆栈信息的HASH值进行验证,若验证通过则正常的执行该函数的功能,否则终止执行该函数的功能,本发明实施例能够有效地保护Flash应用程序的核心函数,防止其被其他第三方程序非法调用。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图3示意性示出了本发明一个实施例的Flash应用程序中的函数访问控制装置的结构示意图。参照图3,本发明实施例的Flash应用程序中的函数访问控制装置具体包括获取模块301、运算模块302、验证模块303以及控制模块304;其中,获取模块301,用于获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,所述目标函数配置有函数访问验证信息,所述函数访问验证信息包括函数验证值和函数标准值,所述函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,所述目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值;运算模块302,用于计算所述当前调用堆栈信息对应的实时HASH值;验证模块303,用于根据所述函数验证值和函数标准值对所述实时HASH值进行验证;控制模块304,用于当所述验证模块302的验证结果为失败时,终止所述目标函数的执行。
进一步地,本实施例中提出的Flash应用程序中的函数访问控制装置中还包括附图中未示出的提示模块,该提示模块用于在所述控制模块304终止所述目标函数的执行之后,生成非法调用提示信息,将所述非法调用提示信息上报服务器。
其中,所述验证模块302,具体用于将所述实时HASH值作为所述加密算法的KEY值对所述函数标准值进行加密,得到第一待验证参数,对所述第一待验证参数与所述函数验证值进行比较,若所述第一待验证参数与所述函数验证值不一致,则确认验证失败,或,
将所述实时HASH值作为对应的解密算法的KEY值对所述函数验证值进行解密,得到第二待验证参数,对所述第二待验证参数与所述函数标准值进行比较,若所述第二待验证参数与所述函数标准值不一致,则确认验证失败。
本发明实施例提供的Flash应用程序中的函数访问控制装置,还包括附图中未示出的预判断模块,该预判断模块,用于在所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息之前,判断所述目标函数是否属于预先指定的核心函数;其中,所述预先指定的核心函数包括资源解密函数、数据加解密函数和用户指定的函数。若所述目标函数属于预先指定的核心函数,则获取模块301执行所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息的操作。
本实施例中,所述获取模块301,具体用于调用预先添加在所述目标函数指定位置的Flash功能函数获取所述当前调用堆栈信息,所述Flash功能函数为预先编写的用于获取函数调用堆栈信息的函数。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本发明实施例提供的Flash应用程序中的函数访问控制方法及装置,通过获取Flash的核心函数的当前调用堆栈信息并计算其HASH值,然后通过该函数对应的函数访问验证信息中的函数验证值和函数标准值对当前调用堆栈信息的HASH值进行验证,若验证通过则正常的执行该函数的功能,否则终止执行该函数的功能,本发明实施例能够有效地保护Flash应用程序的核心函数,防止其被其他第三方程序非法访问,提升用户体验。
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法的步骤。
本实施例中,所述Flash应用程序中的函数访问控制装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
图4为本发明实施例提供的计算机设备的示意图。本发明实施例提供的计算机设备,包括存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序,所述处理器402执行所述计算机程序时实现上述各个Flash应用程序中的函数访问控制方法实施例中的步骤,例如图1所示的步骤S11、获取Flash应用程序中被访问的目标函数的当前调用堆栈信息;步骤S12、计算所述当前调用堆栈信息对应的实时HASH值;步骤S13、根据所述函数验证值和函数标准值对所述实时HASH值进行验证;步骤S14、若验证失败,则终止所述目标函数的执行。或者,所述处理器402执行所述计算机程序时实现上述各Flash应用程序中的函数访问控制装置实施例中各模块/单元的功能,例如图3所示的获取模块301、运算模块302、验证模块303以及控制模块304。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述Flash应用程序中的函数访问控制装置中的执行过程。例如,所述计算机程序可以被分割成获取模块、运算模块、验证模块以及控制模块,各模块具体功能如下:获取模块,用于获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,所述目标函数配置有函数访问验证信息,所述函数访问验证信息包括函数验证值和函数标准值,所述函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,所述目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值;运算模块,用于计算所述当前调用堆栈信息对应的实时HASH值;验证模块,用于根据所述函数验证值和函数标准值对所述实时HASH值进行验证;控制模块,用于当所述验证模块的验证结果为失败时,终止所述目标函数的执行。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图4仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种Flash应用程序中的函数访问控制方法,其特征在于,包括:
获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,所述目标函数配置有函数访问验证信息,所述函数访问验证信息包括函数验证值和函数标准值,所述函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,所述目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值;
计算所述当前调用堆栈信息对应的实时HASH值;
根据所述函数验证值和函数标准值对所述实时HASH值进行验证;
若验证失败,则终止所述目标函数的执行。
2.根据权利要求1所述的方法,其特征在于,所述根据所述函数验证值和函数标准值对所述实时HASH值进行验证,包括:
将所述实时HASH值作为所述加密算法的KEY值对所述函数标准值进行加密,得到第一待验证参数,对所述第一待验证参数与所述函数验证值进行比较,若所述第一待验证参数与所述函数验证值不一致,则确认验证失败,或,
将所述实时HASH值作为对应的解密算法的KEY值对所述函数验证值进行解密,得到第二待验证参数,对所述第二待验证参数与所述函数标准值进行比较,若所述第二待验证参数与所述函数标准值不一致,则确认验证失败。
3.根据权利要求1或2所述的方法,其特征在于,在所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息之前,还包括:
判断所述目标函数是否属于预先指定的核心函数;
若所述目标函数属于预先指定的核心函数,则执行所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息的步骤。
4.根据权利要求3所述的方法,其特征在于,所述预先指定的核心函数包括资源解密函数、数据加解密函数和用户指定的函数。
5.根据权利要求1所述的方法,其特征在于,所述获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,包括:
调用预先添加在所述目标函数指定位置的Flash功能函数获取所述当前调用堆栈信息,所述Flash功能函数为预先编写的用于获取函数调用堆栈信息的函数。
6.根据权利要求1所述的方法,其特征在于,在所述终止所述目标函数的执行之后,还包括:
生成非法调用提示信息,将所述非法调用提示信息上报服务器。
7.一种Flash应用程序中的函数访问控制装置,其特征在于,包括:
获取模块,用于获取Flash应用程序中被访问的目标函数的当前调用堆栈信息,其中,所述目标函数配置有函数访问验证信息,所述函数访问验证信息包括函数验证值和函数标准值,所述函数验证值为采用目标HASH值作为加密算法的KEY值对所述函数标准值进行加密得到,所述目标HASH值为所述目标函数在Flash应用程序中对应的标准调用堆栈信息的HASH值;
运算模块,用于计算所述当前调用堆栈信息对应的实时HASH值;
验证模块,用于根据所述函数验证值和函数标准值对所述实时HASH值进行验证;
控制模块,用于当所述验证模块的验证结果为失败时,终止所述目标函数的执行。
8.根据权利要求7所述的装置,其特征在于,所述验证模块,具体用于将所述实时HASH值作为所述加密算法的KEY值对所述函数标准值进行加密,得到第一待验证参数,对所述第一待验证参数与所述函数验证值进行比较,若所述第一待验证参数与所述函数验证值不一致,则确认验证失败,或,
将所述实时HASH值作为对应的解密算法的KEY值对所述函数验证值进行解密,得到第二待验证参数,对所述第二待验证参数与所述函数标准值进行比较,若所述第二待验证参数与所述函数标准值不一致,则确认验证失败。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6任一项所述方法的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710423552.7A CN107391970B (zh) | 2017-06-07 | 2017-06-07 | Flash应用程序中的函数访问控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710423552.7A CN107391970B (zh) | 2017-06-07 | 2017-06-07 | Flash应用程序中的函数访问控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391970A true CN107391970A (zh) | 2017-11-24 |
CN107391970B CN107391970B (zh) | 2020-08-04 |
Family
ID=60333040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710423552.7A Active CN107391970B (zh) | 2017-06-07 | 2017-06-07 | Flash应用程序中的函数访问控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391970B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008657A (zh) * | 2018-01-05 | 2019-07-12 | 武汉斗鱼网络科技有限公司 | 一种保护网页代码的方法、存储介质、电子设备和*** |
CN113742659A (zh) * | 2021-08-09 | 2021-12-03 | 航天信息股份有限公司 | 一种应用程序防护方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104766016A (zh) * | 2015-04-14 | 2015-07-08 | 北京理工大学 | 一种基于***调用短序列的软件漏洞检测方法 |
CN106203120A (zh) * | 2016-07-15 | 2016-12-07 | 北京邮电大学 | 一种针对Android加固应用的多点Hook逆向方法 |
CN106407114A (zh) * | 2016-09-20 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 内存泄漏分析方法和装置 |
CN106650338A (zh) * | 2015-10-28 | 2017-05-10 | 中国电信股份有限公司 | 一种防止软件被反调试的方法和*** |
CN106650355A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种保护函数调用的方法及装置 |
-
2017
- 2017-06-07 CN CN201710423552.7A patent/CN107391970B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104766016A (zh) * | 2015-04-14 | 2015-07-08 | 北京理工大学 | 一种基于***调用短序列的软件漏洞检测方法 |
CN106650338A (zh) * | 2015-10-28 | 2017-05-10 | 中国电信股份有限公司 | 一种防止软件被反调试的方法和*** |
CN106203120A (zh) * | 2016-07-15 | 2016-12-07 | 北京邮电大学 | 一种针对Android加固应用的多点Hook逆向方法 |
CN106407114A (zh) * | 2016-09-20 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 内存泄漏分析方法和装置 |
CN106650355A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种保护函数调用的方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008657A (zh) * | 2018-01-05 | 2019-07-12 | 武汉斗鱼网络科技有限公司 | 一种保护网页代码的方法、存储介质、电子设备和*** |
CN110008657B (zh) * | 2018-01-05 | 2021-07-23 | 武汉斗鱼网络科技有限公司 | 一种保护网页代码的方法、存储介质、电子设备和*** |
CN113742659A (zh) * | 2021-08-09 | 2021-12-03 | 航天信息股份有限公司 | 一种应用程序防护方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107391970B (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3474209A1 (en) | Storing blockchain private keys in a sim card | |
US20160094347A1 (en) | Method and system for secure management of computer applications | |
CN111654367B (zh) | 密码运算、创建工作密钥的方法、密码服务平台及设备 | |
CN109347625B (zh) | 密码运算、创建工作密钥的方法、密码服务平台及设备 | |
CN111475824B (zh) | 数据访问方法、装置、设备和存储介质 | |
CN106063185A (zh) | 用于安全地共享数据的方法和装置 | |
CN110932859B (zh) | 用户信息的处理方法、装置、设备及可读存储介质 | |
CN109960903A (zh) | 一种应用加固的方法、装置、电子设备及存储介质 | |
CN108462574A (zh) | 一种轻量级密码加密方法和*** | |
CN108449315A (zh) | 请求合法性的校验装置、方法及计算机可读存储介质 | |
CN106330817A (zh) | 一种网页访问方法、装置及终端 | |
CN111628863B (zh) | 一种数据签名的方法、装置、电子设备及存储介质 | |
CN111177693A (zh) | 一种验证终端根证书的方法、装置、设备和介质 | |
CN107358071A (zh) | 防止Flash应用程序中函数非法调用的方法及装置 | |
CN108416224A (zh) | 一种数据加解密方法及装置 | |
CN113726515B (zh) | 一种基于ukey的密钥处理方法、存储介质及电子设备 | |
CN109145533B (zh) | 一种使用随机密码保护代码的方法及装置 | |
CN114499859A (zh) | 密码验证方法、装置、设备及存储介质 | |
CN107391970A (zh) | Flash应用程序中的函数访问控制方法及装置 | |
CN105184119B (zh) | 一种软件的安全保护方法 | |
WO2019178981A1 (zh) | 自定义规则密码管理方法、装置、终端设备及存储介质 | |
CN114741704A (zh) | 一种基于婚恋交友的隐私保护方法、装置、设备及介质 | |
CN112866216B (zh) | 一种用于对文件加密的方法及*** | |
EP2689367B1 (en) | Data protection using distributed security key | |
CN115730319A (zh) | 数据处理方法、装置、计算机设备和存储介质 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240202 Address after: Room 801, 85 Kefeng Road, Huangpu District, Guangzhou City, Guangdong Province Patentee after: Yami Technology (Guangzhou) Co.,Ltd. Country or region after: China Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. Country or region before: China |