CN107122169B - 一种Flash函数加密的方法及装置 - Google Patents
一种Flash函数加密的方法及装置 Download PDFInfo
- Publication number
- CN107122169B CN107122169B CN201710170783.1A CN201710170783A CN107122169B CN 107122169 B CN107122169 B CN 107122169B CN 201710170783 A CN201710170783 A CN 201710170783A CN 107122169 B CN107122169 B CN 107122169B
- Authority
- CN
- China
- Prior art keywords
- function
- target
- program code
- hash value
- function name
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000006870 function Effects 0.000 claims description 238
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例公开了一种Flash函数加密的方法及装置。本发明实施例方法包括:获取Flash文件中编写的目标程序代码,在目标程序代码中查找函数名,对目标程序代码中的目标函数名计算目标哈希值,将目标函数名利用目标哈希值进行替换。本发明实施例中利用哈希值替换Flash文件中的函数名,避免了反编译工具从Flash文件中获取到函数的原始名字,提高了Flash文件的安全性,同时由于计算的哈希值是唯一的,不会导致重名的情况,所有函数名也可以保持同样的长度,方便了以后查找函数的校验。
Description
技术领域
本发明涉及信息处理技术领域,特别涉及一种Flash函数加密的方法及装置。
背景技术
目前,Flash被广泛的用于网页设计和网页动画制作及网页视频播放等。大多数的视频网站包括直播网站都采用Flash做为其视频播放器,并且大多数的网页游戏、大多数的邮箱等网页应用程序都使用Flash来开发一些功能,Flash的具体使用文件是SWF(ShockWave Flash)文件。Flash的开发使用的是ActionScript脚本语言,其脚本语言通过编译器编译后变成可以执行的字节码,由于ActionScript语言的特性,其最终生成的SWF文件中会保存有ActionScript代码中使用的所有函数名,并且是原始的函数名,所以通过反编译工具可以从最终的SWF文件中获取到所有函数的原始名字,从而通过函数名非常容易弄懂其实现的逻辑,从而不利于软件权利的保护(例如对于函数名“DecodeData”,从名字可以知道该函数是用于解密数据的)。因此大多数的Flash也会采用部分核心功能通过C语言来开发,然后最终通过编译器编译成最终的SWF文件。而对于C语言开发其代码的安全性要比使用ActionScript开发的安全性要高,但是同样也存在函数名被反编译软件可以获取到原始的名字的问题。
发明内容
本发明实施例提供了一种Flash函数加密的方法及装置,提高了Flash文件的安全性,方便了以后查找函数的校验。
第一方面,本申请提供一种Flash函数加密的方法,所述方法包括:
获取Flash文件中编写的目标程序代码;
在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值;
将所述目标函数名利用所述目标哈希值进行替换。
进一步的,所述获取Flash文件中编写的目标程序代码的步骤,包括:
获取Flash文件中利用C语言编写的第一程序代码;
所述在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值的步骤包括:
在所述第一程序代码中查找第一函数名,对所述第一程序代码中的第一函数名计算第一哈希值;
所述将所述目标函数名利用所述目标哈希值进行替换的步骤,包括:
将所述第一函数名利用所述第一哈希值进行替换。
进一步的,所述对所述第一程序代码中的第一函数名计算第一哈希值的步骤,包括:
定义存储C语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第一函数名,并生成对应的第一哈希值,建立所述第一函数名与所述第一哈希值对应关系。
进一步的,所述获取Flash文件中编写的目标程序代码的步骤,还包括:
获取Flash文件中利用ActionScript语言编写的第二程序代码;
所述在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值的步骤还包括:
在所述第二程序代码中查找第二函数名,对所述第二程序代码中的第二函数名计算第二哈希值;
所述将所述目标函数名利用所述目标哈希值进行替换的步骤,包括:
将所述第二函数名利用所述第二哈希值进行替换。
进一步的,所述对所述第二程序代码中的第二函数名计算第二哈希值的步骤,包括:
定义存储ActionScript语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第二函数名,并生成对应的第二哈希值,建立所述第二函数名与所述第二哈希值对应关系。
第二方面,本申请提供一种Flash函数加密的装置,所述装置包括:
获取单元,用于获取Flash文件中编写的目标程序代码;
哈希计算单元,用于在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值;
替换单元,用于将所述目标函数名利用所述目标哈希值进行替换。
进一步的,所述获取单元具体用于:
获取Flash文件中利用C语言编写的第一程序代码;
所述哈希计算单元具体用于:
在所述第一程序代码中查找第一函数名,对所述第一程序代码中的第一函数名计算第一哈希值;
所述替换单元具体用于:
将所述第一函数名利用所述第一哈希值进行替换。
进一步的,所述哈希计算单元具体用于:
定义存储C语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第一函数名,并生成对应的第一哈希值,建立所述第一函数名与所述第一哈希值对应关系。
进一步的,所述获取单元具体还用于:
获取Flash文件中利用ActionScript语言编写的第二程序代码;
所述哈希计算单元具体还用于:
在所述第二程序代码中查找第二函数名,对所述第二程序代码中的第二函数名计算第二哈希值;
所述替换单元具体还用于:
将所述第二函数名利用所述第二哈希值进行替换。
进一步的,所述哈希计算单元具体用于:
定义存储ActionScript语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第二函数名,并生成对应的第二哈希值,建立所述第二函数名与所述第二哈希值对应关系。
本发明实施例通过获取Flash文件中编写的目标程序代码,在目标程序代码中查找函数名,对编写的目标程序代码中的目标函数名计算目标哈希值,将目标函数名利用目标哈希值进行替换。本发明实施例中利用哈希值替换Flash文件中的函数名,避免了反编译工具从Flash文件中获取到函数的原始名字,提高了Flash文件的安全性,同时由于计算的哈希值是唯一的,不会导致重名的情况,所有函数名也可以保持同样的长度,方便了以后查找函数的校验。
附图说明
图1是本发明实施例中Flash函数加密的方法的一个实施例示意图;
图2是图1所示实施例中步骤S1的一个实施例示意图;
图3是图1所示实施例中步骤S2的一个实施例示意图;
图4是图3所示实施例中步骤S21的一个实施例示意图;
图5是图1所示实施例中步骤S3的一个实施例示意图;
图6是图3所示实施例中步骤S22的一个实施例示意图;
图7是本发明实施例中Flash函数加密的装置的一个实施例示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
针对现有技术的以上缺陷,如果在原始开发Flash程序的使用使用无意义的函数名是可以解决这个问题的,但是如果使用无意义的函数名,对于程序开发者来说是巨大的挑战,同时也使得代码不容易读懂。而本发明实施例中则提供了一种方法即在开发原始代码的时候使用有意义的函数名,而在开发完成后,通过编写另一个工具来对所有原始代码的函数名进行一个加密,本发明实施例中使用对所有的函数名计算出结果的哈希值(例如MD5值)来代替原始的函数名,同时使用哈希值的好处是,哈希值是一串无意义的字符串,同时函数名的唯一性,其最终计算的哈希值值也是唯一的,不会导致重名的情况,同时所有函数名也可以保持同样的长度,也比较方便以后查找函数的校验。所有函数名加密后,在使用Flash的编译器对代码进行编译,得到最终的Flash文件(例如SWF文件)。
下面首先详细介绍本发明实施例中Flash函数加密的方法的实施例。
请参阅图1,本发明实施例中Flash函数加密的方法的一个实施例包括:
S1、获取Flash文件中编写的目标程序代码;
S2、在目标程序代码中查找目标函数名,对目标程序代码中的目标函数名计算目标哈希值;
本发明实施例中,对编写的目标程序代码中的所有函数名分别计算哈希值时,采用的是同一种哈希算法,例如MD5,SHA-1等,其中,优选MD5算法。目标程序代码中的函数名可以是目标程序代码中所有函数名,也可以是所有函数名中自定义的核心函数名。
S3、将目标函数名利用目标哈希值进行替换。
本发明实施例通过获取Flash文件中编写的目标程序代码,在目标程序代码中查找函数名,对编写的目标程序代码中的目标函数名计算目标哈希值,将目标函数名利用目标哈希值进行替换。本发明实施例中利用哈希值替换Flash文件中的函数名,避免了反编译工具从Flash文件中获取到函数的原始名字,提高了Flash文件的安全性,同时由于计算的哈希值是唯一的,不会导致重名的情况,所有函数名也可以保持同样的长度,方便了以后查找函数的校验。
如图2所示,上述步骤S1具体包括:
S11、获取Flash文件中利用C语言编写的第一程序代码。
由于目前的Flash的程序大多采用C语言开发部分核心功能,ActionScript开发部分功能,从而两者结合起来成最终的SWF文件。而对于C语言来说,则可以读取所有C语言编写的代码文件,其中,第一程序代码为Flash文件中利用C语言编写的程序代码中的部分或全部。
如图3所示,上述步骤S2具体包括:
S21、在第一程序代码中查找第一函数名,对第一程序代码中的第一函数名计算第一哈希值。
对于C语言来说,则可以读取所有C语言编写的代码文件,例如第一程序代码,从中找到第一函数名,并对第一函数名计算其第一哈希值。同时使用STL模块库提供的MAP容器(映射和多重映射基于某一类型Key的键集的存在,提供对T类型的数据进行快速和高效的检索)来关联第一函数名和其第一哈希值的对应关系。而在C语言中,其函数名是有语法规则的,每一个函数名的定义都是如下:
返回值类型函数名(参数列表){函数开始括号}函数结束括号。
按照上述规则比较容易的可以从所有的C语言的原始第一程序代码中查找出第一函数名,并计算其第一函数名的第一哈希值。最终所有的第一函数名和其对应的第一哈希值都可以存储在MAP管理容器中。
本实施例中,同样的,第一函数名可以是第一程序代码中的所有函数名,也可以是第一程序代码中,利用C语言编写的程序代码中自定义的核心函数名。
如图4所示,上述步骤S21可以进一步包括:
S211、定义存储C语言函数名和哈希值管理的容器;
以哈希算法为MD5算法,哈希值为MD5值为例,定义存储C语言函数名和MD5值管理的容器MAP,具体如下:
Map<Sting,String>mapFuncName;
其中第一个参数String用于存储原始的函数名,第二个参数String用于存储原始函数名的MD5值。
S212、分别在容器中存储利用第一函数名,并生成对应的第一哈希值,建立第一函数名与第一哈希值对应关系。
仍以MD5值为例,假设有一个函数的函数名称是“DecodeData”,那么存储如下:
mapFuncName[“DecodeData”]=Md5.CreateMd5(“DecodeData”);
最终在MAP容器mapFuncName中存储了所有的第一函数名和其对应的MD5值(第一哈希值)。
至此,通过这个步骤就实现了对所有第一函数名建立与MD5值(第一哈希值)的对应关系。
如图5所示,上述步骤S3可以进一步包括:
S31、将第一函数名利用第一哈希值进行替换。
在步骤S212中建立了第一函数名称和其第一哈希值的对应关系,从而在MAP容器mapFuncName存储了所有第一函数名,有了所有第一函数名后,则需要对于容器mapFuncName中所有的第一函数名去在C语言的原始第一程序代码中查找有使用同样第一函数名的地方,然后将第一函数名称替换成其第一哈希值。
下面仍以哈希值为MD5值为例进行介绍,具体实现如下:
map<string,string>mapFuncName;
map<string,string>::iterator it=mapFuncName.begin();
for(;it!=mapFuncName.end();++it)
{
string srcFuncName=(*it).first;
string strMd5=(*it).second;
}
其中srcFuncName则是原始的第一函数名,strMd5则是其原始第一函数名的MD5值(第一哈希值),然后对于每一个第一函数名srcFuncName去C语言的原始第一程序代码中查找,凡是出现srcFuncName的地方则用strMd5来替换。
至此,通过这个步骤就实现了利用第一函数名的地方替换成其第一哈希值。
如图2所示,上述步骤S1具体还包括:
S12、获取Flash文件中利用ActionScript语言编写的第二程序代码。
其中,第二程序代码为Flash文件中利用ActionScript语言编写的程序代码中的部分或全部,对于ActionScript中的函数,本文对于所有函数的定义都是定义在一个Class中的成员函数,所以所有函数的定义都包含在Class内,那么查找所有函数就在Class的代码内进行查找。例如:
public class work
{
public function add()
{
}
}
其中,在Class中有一个成员函数public function add(),在ActionScript中,所有的函数都是以function作为函数的前缀,然后是空格,然后是函数名。
所有函数的定义:
Function funcName(参数):返回类型
由此实现在ActionScript的代码中对每个Class中查找所有的第二函数名。
如图3所示,上述步骤S2具体还包括:
S22、在第二程序代码中查找第二函数名,对第二程序代码中的第二函数名计算第二哈希值。
本发明实施例中,第一哈希值和第二哈希值可以是采用同样的哈希算法计算的,例如均为MD5算法计算的,也可以是采用不同的哈希算法计算出来的,以进一步提高安全性,此处不做限定。
本实施例中,同样的,第二函数名可以是第二程序代码中,利用ActionScript语言编写的程序代码中的所有函数名,也可以是第二程序代码中,利用ActionScript语言编写的程序代码中自定义的核心函数名。
由于每个不同的Class是可以定义相同的函数名称的,所以对于每个第二函数名对应的第二哈希值则需要将Class的名称和第二函数名一起来计算其第二哈希值。
如图6所示,上述步骤S22具体进一步还可以包括:
S221、定义存储ActionScript语言函数名和哈希值管理的容器;
以哈希算法为MD5算法,哈希值为MD5值为例,定义存储函数名和MD5值(哈希值)管理的容器MAP,具体如下:
Map<Sting,String>mapActionName;
其中第一个参数String用于存储原始的函数名,第二个参数String用于存储原始函数名的MD5值。
S222、分别在容器中存储第二函数名,并生成对应的第二哈希值,建立第二函数名与第二哈希值对应关系。
其中,所述容器为上述存储ActionScript语言函数名和哈希值管理的容器。
仍以MD5值为例,假设上文提到的Class work有一个函数是“add”,那么存储如下:
mapActionName[“work_add”]=Md5.CreateMd5(“work_add”);
最终在MAP容器mapActionName中存储了所有的第二函数名和其对应的MD5值(第二哈希值),这样即使有不同的Class有同一个函数也是不会导致其MD5值(第二哈希值)相同。
通过对所有Class的函数名称做上述操作,则可以将所有的第二函数名存储在容器mapActionName中。其中,需要注意的是,对于每个Class的构造第二函数名称本发明实施例中不做替换,例如对于Class work会在这个Class中存在一个第二函数名也叫work则对于这个第二函数名不做替换。
至此,通过这个步骤就实现存储所有ActionScript中所有第二函数名称和其MD5值(第二哈希值)的对应关系。
如图5所示,上述步骤S3还可以进一步包括:
S32、将第二函数名利用第二哈希值进行替换。
第二哈希值仍以MD5值为例,对在ActionScript语言代码中查找第二函数名使用的地方并替换成MD5值。
而对于ActionScript中可能存在多个Class有同样的第二函数名的情况,其第二函数名称替换会复杂些,对于每个函数的原始函数名本发明实施例中是都包含了其Class名称和函数名称,在ActionScript脚本中对于每个函数的调用有2种情况:一种是在一个Class中调用该Class的函数,对于这种情况调用的地方只需要函数名称,第二种情况则是在一个Class中调用另一个Class的函数,则对于这种情况是会使用该Class的对象加.号再加上函数名称。所以在进行第二函数名替换时,如果对于第一种情况则替换成该Class下的函数的MD5值(第二哈希值),而对于第二种情况则需要查找函数.号前面对象所属于哪个Class,在这个对象创建的地方就可以获取其是那个Class,则需要替换成对应那个Class的函数名称。具体替换则和步骤S31中的替换方法一样。
至此,通过这个步骤就实现对ActionScript中函数调用的地方进行第二函数名称的替换。
下面介绍本发明实施例中Flash函数加密的装置的实施例。
请参阅图7,为本发明实施例中Flash函数加密的装置的一个实施例示意图,该Flash函数加密的装置包括:
获取单元701,用于获取Flash文件中编写的目标程序代码;
哈希计算单元702,用于在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值;
替换单元703,用于将所述目标函数名利用所述目标哈希值进行替换。
进一步的,所述获取单元701具体用于:
获取Flash文件中利用C语言编写的第一程序代码;
所述哈希计算单元702具体用于:
在所述第一程序代码中查找第一函数名,对所述第一程序代码中的第一函数名计算第一哈希值;
所述替换单元703具体用于:
将所述第一函数名利用所述第一哈希值进行替换。
进一步的,所述哈希计算单元702具体用于:
定义存储C语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第一函数名,并生成对应的第一哈希值,建立所述第一函数名与所述第一哈希值对应关系。
进一步的,所述获取单元701具体还用于:
获取Flash文件中利用ActionScript语言编写的第二程序代码;
所述哈希计算单元702具体还用于:
在所述第二程序代码中查找第二函数名,对所述第二程序代码中的第二函数名计算第二哈希值;
所述替换单元703具体还用于:
将所述第二函数名利用所述第二哈希值进行替换。
进一步的,所述哈希计算单元702具体用于:
定义存储ActionScript语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第二函数名,并生成对应的第二哈希值,建立所述第二函数名与所述第二哈希值对应关系。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种Flash函数加密的方法,其特征在于,所述方法包括:
获取Flash文件中编写的目标程序代码;
在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值;
将所述目标函数名利用所述目标哈希值进行替换;
所述获取Flash文件中编写的目标程序代码的步骤,包括:
获取Flash文件中利用C语言编写的第一程序代码;
所述在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值的步骤包括:
在所述第一程序代码中查找第一函数名,对所述第一程序代码中的第一函数名计算第一哈希值;
所述将所述目标函数名利用所述目标哈希值进行替换的步骤,包括:
将所述第一函数名利用所述第一哈希值进行替换;
所述获取Flash文件中编写的目标程序代码的步骤,包括:
获取Flash文件中利用ActionScript语言编写的第二程序代码;
所述在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值的步骤,包括:
在所述第二程序代码中查找第二函数名,对所述第二程序代码中的第二函数名计算第二哈希值,具体为将Class的名称和第二函数名一起来计算所述第二哈希值;
所述将所述目标函数名利用所述目标哈希值进行替换的步骤,包括:
将所述第二函数名利用所述第二哈希值进行替换。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一程序代码中的第一函数名计算第一哈希值的步骤,包括:
定义存储C语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第一函数名,并生成对应的第一哈希值,建立所述第一函数名与所述第一哈希值对应关系。
3.根据权利要求1所述的方法,其特征在于,所述对所述第二程序代码中的第二函数名计算第二哈希值的步骤,包括:
定义存储ActionScript语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第二函数名,并生成对应的第二哈希值,建立所述第二函数名与所述第二哈希值对应关系。
4.一种Flash函数加密的装置,其特征在于,所述装置包括:
获取单元,用于获取Flash文件中编写的目标程序代码;
哈希计算单元,用于在所述目标程序代码中查找目标函数名,对所述目标程序代码中的目标函数名计算目标哈希值;
替换单元,用于将所述目标函数名利用所述目标哈希值进行替换;
所述获取单元具体用于:
获取Flash文件中利用C语言编写的第一程序代码;
所述哈希计算单元具体用于:
在所述第一程序代码中查找第一函数名,对所述第一程序代码中的第一函数名计算第一哈希值;
所述替换单元具体用于:
将所述第一函数名利用所述第一哈希值进行替换;
所述获取单元具体用于:
获取Flash文件中利用ActionScript语言编写的第二程序代码;
所述哈希计算单元具体用于:
在所述第二程序代码中查找第二函数名,对所述第二程序代码中的第二函数名计算第二哈希值,具体为将Class的名称和第二函数名一起来计算所述第二哈希值;
所述替换单元具体用于:
将所述第二函数名利用所述第二哈希值进行替换。
5.根据权利要求4所述的装置,其特征在于,所述哈希计算单元具体用于:
定义存储C语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第一函数名,并生成对应的第一哈希值,建立所述第一函数名与所述第一哈希值对应关系。
6.根据权利要求4所述的装置,其特征在于,所述哈希计算单元具体用于:
定义存储ActionScript语言函数名和哈希值管理的容器;
分别在所述容器中存储所述第二函数名,并生成对应的第二哈希值,建立所述第二函数名与所述第二哈希值对应关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710170783.1A CN107122169B (zh) | 2017-03-21 | 2017-03-21 | 一种Flash函数加密的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710170783.1A CN107122169B (zh) | 2017-03-21 | 2017-03-21 | 一种Flash函数加密的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122169A CN107122169A (zh) | 2017-09-01 |
CN107122169B true CN107122169B (zh) | 2021-02-02 |
Family
ID=59718078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710170783.1A Active CN107122169B (zh) | 2017-03-21 | 2017-03-21 | 一种Flash函数加密的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122169B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032833B (zh) * | 2018-01-11 | 2021-06-15 | 武汉斗鱼网络科技有限公司 | 一种Web应用程序的处理方法及装置 |
CN110032832B (zh) * | 2018-01-11 | 2021-07-23 | 武汉斗鱼网络科技有限公司 | 一种Web应用程序的处理方法及装置 |
CN110032866B (zh) * | 2018-01-11 | 2021-06-15 | 武汉斗鱼网络科技有限公司 | 一种Web应用程序的处理方法及装置 |
CN108494548A (zh) * | 2018-04-09 | 2018-09-04 | 平安普惠企业管理有限公司 | 引用样式加密方法、装置、计算机设备及存储介质 |
CN109858204B (zh) * | 2019-01-03 | 2021-01-15 | 武汉极意网络科技有限公司 | 一种基于llvm的程序代码保护方法及装置 |
CN111428209B (zh) * | 2019-01-10 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 一种应用程序的混淆方法、装置及存储介质 |
CN110389753B (zh) * | 2019-06-06 | 2024-01-23 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327099B2 (en) * | 2005-04-27 | 2012-12-04 | Incomm Technologies Co., Ltd | Method for soft configuring a memory device |
KR100969758B1 (ko) * | 2007-01-22 | 2010-07-13 | 삼성전자주식회사 | 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치 |
TWI372340B (en) * | 2008-08-29 | 2012-09-11 | Phison Electronics Corp | Storage system, controller and data protecting method thereof |
CN102254125A (zh) * | 2010-05-21 | 2011-11-23 | 腾讯科技(北京)有限公司 | Elf文件加密方法及系统 |
CN104504313A (zh) * | 2014-12-31 | 2015-04-08 | 北京畅游天下网络技术有限公司 | 一种对代码进行保密处理的方法及装置 |
-
2017
- 2017-03-21 CN CN201710170783.1A patent/CN107122169B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107122169A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122169B (zh) | 一种Flash函数加密的方法及装置 | |
US10778441B2 (en) | Redactable document signatures | |
US9237011B2 (en) | Unique surrogate key generation using cryptographic hashing | |
US10586026B2 (en) | Simple obfuscation of text data in binary files | |
US11270227B2 (en) | Method for managing a machine learning model | |
US9619657B2 (en) | Method and apparatus for storing redeem code, and method and apparatus for verifying redeem code | |
CN107077540B (zh) | 用于提供基于云的应用安全服务的方法和系统 | |
US10083194B2 (en) | Process for obtaining candidate data from a remote storage server for comparison to a data to be identified | |
CN104463012A (zh) | 虚拟机镜像文件的导出、导入方法及装置 | |
US20190158269A1 (en) | Secure order preserving string compression | |
CN112241298A (zh) | 页面显示方法及装置、存储介质、电子装置 | |
CN108304727A (zh) | 数据处理的方法与装置 | |
CN105653949A (zh) | 一种恶意程序检测方法及装置 | |
Dyson et al. | Scenario-based creation and digital investigation of ethereum ERC20 tokens | |
CN111898135A (zh) | 数据处理方法、数据处理装置、计算机设备和介质 | |
US20120151600A1 (en) | Method and system for protecting intellectual property in software | |
CN104954329A (zh) | 一种生物特征信息的处理方法及装置 | |
CN115473702A (zh) | 一种基于在线交互式web动态防御的内容混淆方法 | |
Fu et al. | Digital forensics of Microsoft Office 2007–2013 documents to prevent covert communication | |
CN111753312B (zh) | 数据处理方法、装置、设备和系统 | |
CN110502888B (zh) | 一种基于可信度量的移动软件白名单机制的移动办公方法 | |
CN108536713B (zh) | 字符串审核方法、装置及电子设备 | |
CN112182603B (zh) | 反爬虫方法和装置 | |
Zbrzezny et al. | Practical approach in verification of security systems using satisfiability modulo theories | |
CN103839004A (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 |