CN109492353B - 应用加固方法、装置、电子设备和存储介质 - Google Patents

应用加固方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN109492353B
CN109492353B CN201811182283.0A CN201811182283A CN109492353B CN 109492353 B CN109492353 B CN 109492353B CN 201811182283 A CN201811182283 A CN 201811182283A CN 109492353 B CN109492353 B CN 109492353B
Authority
CN
China
Prior art keywords
target
encryption
application
dll
reinforcement
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
Application number
CN201811182283.0A
Other languages
English (en)
Other versions
CN109492353A (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 Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo 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 Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811182283.0A priority Critical patent/CN109492353B/zh
Publication of CN109492353A publication Critical patent/CN109492353A/zh
Application granted granted Critical
Publication of CN109492353B publication Critical patent/CN109492353B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了应用加固方法、装置、电子设备和存储介质。所述方法包括:获取待加固应用的若干个目标动态链接库dll文件,所述目标dll文件中包含被标记的若干个目标字段;为所述目标dll文件添加加固模块,所述加固模块用于对所述目标字段的存取过程进行加解密处理。该技术方案的有益效果在于,一方面为应用提供了保护,使其不能通过读取内存的方式轻易被破解,另一方面又不需要应用开发者在开发过程中增加过多工作量,只需要对待保护的字段进行标记即可,在降低开发者工作量的同时,提高了应用的安全性。

Description

应用加固方法、装置、电子设备和存储介质
技术领域
本发明涉及信息安全领域,具体涉及应用加固方法、装置、电子设备和存储介质。
背景技术
应用饱受恶意程序的侵害,以一个实际场景为例,一款基于Unity3D开发的游戏应用,游戏内容涉及账号充值,用户可以通过充值来购买金币、钻石等游戏货币,以及实现游戏角色血量、经验等的提升。该游戏的外挂通过修改游戏内存的方式,可以实现增加金币、钻石等,破坏了游戏生态。因此,需要一种对应用进行加固的合理措施。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用加固方法、装置、电子设备和存储介质。
依据本发明的一个方面,提供了一种应用加固方法,包括:
获取待加固应用的若干个目标动态链接库dll文件,所述目标dll文件中包含被标记的若干个目标字段;
为所述目标dll文件添加加固模块,所述加固模块用于对所述目标字段的存取过程进行加解密处理。
可选地,所述获取待加固应用的若干个动态链接库目标dll文件包括:
获取所述待加固应用的安装包;
对所述安装包进行解包,得到若干个dll文件;
从所述若干个dll文件中选取若干个目标dll文件。
可选地,该方法还包括:
根据添加加固模块后的目标dll文件重新生成安装包。
可选地,所述目标字段是基于C#的属性特性进行标记的。
可选地,所述加固模块为包含加解密函数的dll文件,所述为所述目标dll文件添加加固模块包括:
将目标dll文件和包含加解密函数的dll文件进行合并。
可选地,所述为所述目标dll文件添加加固模块还包括:
从所述目标dll文件中查找出所述目标字段,以及查找出目标字段的存取指令;
根据所述加解密函数对所述存取指令进行加解密。
可选地,所述根据所述加解密函数对所述存取指令进行加解密包括:
对于存指令,根据加密函数对存至计算栈的值进行加密处理;
对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
可选地,所述加解密函数的加密因子根据对目标字段的存取操作而改变。
依据本发明的另一方面,提供了一种应用加固装置,包括:
获取单元,适于获取待加固应用的若干个目标动态链接库dll文件,所述目标dll文件中包含被标记的若干个目标字段;
加固单元,适于为所述目标dll文件添加加固模块,所述加固模块用于对所述目标字段的存取过程进行加解密处理。
可选地,所述获取单元,适于获取所述待加固应用的安装包;对所述安装包进行解包,得到若干个dll文件;从所述若干个dll文件中选取若干个目标dll文件。
可选地,该装置还包括:
打包单元,适于根据添加加固模块后的目标dll文件重新生成安装包。
可选地,所述目标字段是基于C#的属性特性进行标记的。
可选地,所述加固模块为包含加解密函数的dll文件;
所述加固单元,适于将目标dll文件和包含加解密函数的dll文件进行合并。
可选地,所述加固单元,还适于从所述目标dll文件中查找出所述目标字段,以及查找出目标字段的存取指令;根据所述加解密函数对所述存取指令进行加解密。
可选地,所述加固单元,适于对于存指令,根据加密函数对存至计算栈的值进行加密处理;对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
可选地,所述加解密函数的加密因子根据对目标字段的存取操作而改变。
依据本发明的又一方面,提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上述任一所述的方法。
依据本发明的再一方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储若干个程序,所述若干个程序当被处理器执行时,实现如上述任一所述的方法。
由上述可知,本发明的技术方案,通过获取待加固应用的若干个目标动态链接库dll文件,为其添加加固模块,借由加固模块对dll中标记的目标字段的存取过程进行加解密处理,实现了对字段的保护,实现了应用的加固。该技术方案的有益效果在于,一方面为应用提供了保护,使其不能通过读取内存的方式轻易被破解,另一方面又不需要应用开发者在开发过程中增加过多工作量,只需要对待保护的字段进行标记即可,在降低开发者工作量的同时,提高了应用的安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种应用加固方法的流程示意图;
图2示出了根据本发明一个实施例的一种应用加固装置的结构示意图;
图3示出了根据本发明一个实施例的电子设备的结构示意图;
图4示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种应用加固方法的流程示意图。如图1所示,该方法包括:
步骤S110,获取待加固应用的若干个目标动态链接库dll文件,目标dll文件中包含被标记的若干个目标字段。
一种解决方式是在开发过程中,对特定的应用内容对应的字段(field,C#语言中,类中的成员变量)进行加密,例如将字段进行替换,修改为自定义类的类型,这样在对字段进行存取时,可以实现内存中的值与应用界面上展示的值不一致,这样恶意程序如外挂等搜索应用界面上的值时,无法在内存中搜索到对应的值(因为已经加密了)。这样就实现了对特定字段的保护。
但是这种方式还存在一定的缺点,即开发者的工作量很大,在完成应用的基本功能后,还需要额外进行加固的工作。
而采用本实施例中的方法,开发者仅需要标记出哪些字段需要保护,使得加固过程与开发过程独立开来。例如,开发者完全可以委托其他公司进行应用加固。而加固方仅需要通过标记识别出目标字段,在对其进行保护即可。
步骤S120,为目标dll文件添加加固模块,加固模块用于对目标字段的存取过程进行加解密处理。
这样同样可以实现在对字段进行存取时,可以实现内存中的值与应用界面上展示的值不一致的效果,也就实现了对目标字段的保护。
可见,图1所示的方法,通过获取待加固应用的若干个目标动态链接库dll文件,为其添加加固模块,借由加固模块对dll中标记的目标字段的存取过程进行加解密处理,实现了对字段的保护,实现了应用的加固。该技术方案的有益效果在于,一方面为应用提供了保护,使其不能通过读取内存的方式轻易被破解,另一方面又不需要应用开发者在开发过程中增加过多工作量,只需要对待保护的字段进行标记即可,在降低开发者工作量的同时,提高了应用的安全性。
在本发明的一个实施例中,上述方法中,获取待加固应用的若干个动态链接库目标dll文件包括:获取待加固应用的安装包;对安装包进行解包,得到若干个dll文件;从若干个dll文件中选取若干个目标dll文件。
本实施例适用于作为独立的加固服务提供方,为应用开发者提供应用加固服务的场景。例如,提供一个前端页面用于开发者上传待加固应用的安装包,在获取到安装包后进行解包操作,得到其中的dll文件,再选出要进行加固的dll文件。
例如,对于安卓应用通常基于JAVA语言来开发,但是对于许多游戏应用,还使用了Unity3D技术,用到了C#语言,也具有对游戏内容如金币、钻石等对应字段的保护需求。其中,许多代码最终被编译为dll文件来使用。在这些场景下,就需要对重要的dll文件进行加固。
在本发明的一个实施例中,上述方法还包括:根据添加加固模块后的目标dll文件重新生成安装包。
在本实施例中,可以将解包后的其他文件如资源文件等,与添加加固模块后的目标dll文件重新打包生成一个安装包。在生成新安装包的过程中可以根据需求,对其他文件或是安装包整体进行加固,即本发明实施例所提供的应用加固方式与其他应用加固方式是兼容的。
在本发明的一个实施例中,上述方法中,目标字段是基于C#的属性特性进行标记的。
前面的实施例提及,许多使用Unity3D技术开发的应用,在开发过程中会涉及使用C#语言进行开发。则在本实施例中利用C#中的属性(attribute)特性,实现对目标字段的标记。
attribute是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。可以通过使用特性向程序添加声明性信息。还可以用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。
在本实施例中,可以利用attribute来形成一种特定的描述,来对目标字段进行标记。
在本发明的一个实施例中,上述方法中,加固模块为包含加解密函数的dll文件,为目标dll文件添加加固模块包括:将目标dll文件和包含加解密函数的dll文件进行合并。
由于加解密函数可以用于多个应用的加固,因此,可以生成独立的dll文件,这样对于多个待加固的dll文件,只需要将其分别与包含加解密函数的dll文件进行合并,就可以分别得到加固后的dll文件。具体的dll合并工具和方式有很多,本发明对此不作限制。
在本发明的一个实施例中,上述方法中,为目标dll文件添加加固模块还包括:从目标dll文件中查找出目标字段,以及查找出目标字段的存取指令;根据加解密函数对存取指令进行加解密。
本实施例给出了一种加固细节的实现示例。加固的目的是使恶意程序无法从内存中搜索到有用信息,因此实际要对放入内存中的值进行加密,但是又不能影响原来值的正常使用。
因此,找到目标字段的存取指令是加解密的重点。在本发明的一个实施例中,上述方法中,根据加解密函数对存取指令进行加解密包括:对于存指令,根据加密函数对存至计算栈的值进行加密处理;对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
例如,在存指令前,加入加密逻辑,根据加密函数对存至计算栈的值进行加密处理。这样实际就修改了计算栈,将栈顶的值进行了加密,也就是内存中写入的是加密的值;在使用时,由于使用取指令,则在取指令后加入解密逻辑,也是相当于修改计算栈,将栈顶的值解密。这样通过修改计算栈的方式,影响了对字段的存取操作,进而影响了内存中的值,使得内存上的字段一直处于加密状态,避免被恶意程序搜索到,同时又不影响字段原来值的使用。
这里还需要注意的是,由于对计算栈进行了操作,还需要保持该操作不会对栈产生其他影响,影响栈中其他数据的存取,因此要合理设置插入到存指令前和取指令后的指令。
在本发明的一个实施例中,上述方法中,加解密函数的加密因子根据对目标字段的存取操作而改变。
在本实施例中,通过选取特别的加解密函数进一步提升了加固后应用的安全性。一些恶意程序通过暴力破解等方式获取加解密函数的加密因子,因此在本实施例中,选取的加解密函数可以在每次执行后,变更加密因子,即实现了加密因子根据对目标字段的存取操作而改变,进一步增加了安全性。
图2示出了根据本发明一个实施例的一种应用加固装置的结构示意图。如图2所示,应用加固装置200包括:
获取单元210,适于获取待加固应用的若干个目标动态链接库dll文件,目标dll文件中包含被标记的若干个目标字段。
一种解决方式是在开发过程中,对特定的应用内容对应的字段(field,C#语言中,类中的成员变量)进行加密,例如将字段进行替换,修改为自定义类的类型,这样在对字段进行存取时,可以实现内存中的值与应用界面上展示的值不一致,这样恶意程序如外挂等搜索应用界面上的值时,无法在内存中搜索到对应的值(因为已经加密了)。这样就实现了对特定字段的保护。
但是这种方式还存在一定的缺点,即开发者的工作量很大,在完成应用的基本功能后,还需要额外进行加固的工作。
而采用本实施例中的方法,开发者仅需要标记出哪些字段需要保护,使得加固过程与开发过程独立开来。例如,开发者完全可以委托其他公司进行应用加固。而加固方仅需要通过标记识别出目标字段,在对其进行保护即可。
加固单元220,适于为目标dll文件添加加固模块,加固模块用于对目标字段的存取过程进行加解密处理。
这样同样可以实现在对字段进行存取时,可以实现内存中的值与应用界面上展示的值不一致的效果,也就实现了对目标字段的保护。
可见,图2所示的装置,通过各单元的相互配合,获取待加固应用的若干个目标动态链接库dll文件,为其添加加固模块,借由加固模块对dll中标记的目标字段的存取过程进行加解密处理,实现了对字段的保护,实现了应用的加固。该技术方案的有益效果在于,一方面为应用提供了保护,使其不能通过读取内存的方式轻易被破解,另一方面又不需要应用开发者在开发过程中增加过多工作量,只需要对待保护的字段进行标记即可,在降低开发者工作量的同时,提高了应用的安全性。
在本发明的一个实施例中,上述装置中,获取单元210,适于获取待加固应用的安装包;对安装包进行解包,得到若干个dll文件;从若干个dll文件中选取若干个目标dll文件。
本实施例适用于作为独立的加固服务提供方,为应用开发者提供应用加固服务的场景。例如,提供一个前端页面用于开发者上传待加固应用的安装包,在获取到安装包后进行解包操作,得到其中的dll文件,再选出要进行加固的dll文件。
例如,对于安卓应用通常基于JAVA语言来开发,但是对于许多游戏应用,还使用了Unity3D技术,用到了C#语言,也具有对游戏内容如金币、钻石等对应字段的保护需求。其中,许多代码最终被编译为dll文件来使用。在这些场景下,就需要对重要的dll文件进行加固。
在本发明的一个实施例中,上述装置还包括:打包单元(图未示出),适于根据添加加固模块后的目标dll文件重新生成安装包。
在本实施例中,可以将解包后的其他文件如资源文件等,与添加加固模块后的目标dll文件重新打包生成一个安装包。在生成新安装包的过程中可以根据需求,对其他文件或是安装包整体进行加固,即本发明实施例所提供的应用加固方式与其他应用加固方式是兼容的。
在本发明的一个实施例中,上述装置中,目标字段是基于C#的属性特性进行标记的。
前面的实施例提及,许多使用Unity3D技术开发的应用,在开发过程中会涉及使用C#语言进行开发。则在本实施例中利用C#中的属性(attribute)特性,实现对目标字段的标记。
attribute是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。可以通过使用特性向程序添加声明性信息。还可以用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。
在本实施例中,可以利用attribute来形成一种特定的描述,来对目标字段进行标记。
在本发明的一个实施例中,上述装置中,加固模块为包含加解密函数的dll文件;加固单元220,适于将目标dll文件和包含加解密函数的dll文件进行合并。
由于加解密函数可以用于多个应用的加固,因此,可以生成独立的dll文件,这样对于多个待加固的dll文件,只需要将其分别与包含加解密函数的dll文件进行合并,就可以分别得到加固后的dll文件。具体的dll合并工具和方式有很多,本发明对此不作限制。
在本发明的一个实施例中,上述装置中,加固单元220,还适于从目标dll文件中查找出目标字段,以及查找出目标字段的存取指令;根据加解密函数对存取指令进行加解密。
本实施例给出了一种加固细节的实现示例。加固的目的是使恶意程序无法从内存中搜索到有用信息,因此实际要对放入内存中的值进行加密,但是又不能影响原来值的正常使用。
因此,找到目标字段的存取指令是加解密的重点。在本发明的一个实施例中,上述装置中,加固单元220,适于对于存指令,根据加密函数对存至计算栈的值进行加密处理;对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
例如,在存指令前,加入加密逻辑,根据加密函数对存至计算栈的值进行加密处理。这样实际就修改了计算栈,将栈顶的值进行了加密,也就是内存中写入的是加密的值;在使用时,由于使用取指令,则在取指令后加入解密逻辑,也是相当于修改计算栈,将栈顶的值解密。这样通过修改计算栈的方式,影响了对字段的存取操作,进而影响了内存中的值,使得内存上的字段一直处于加密状态,避免被恶意程序搜索到,同时又不影响字段原来值的使用。
这里还需要注意的是,由于对计算栈进行了操作,还需要保持该操作不会对栈产生其他影响,影响栈中其他数据的存取,因此要合理设置插入到存指令前和取指令后的指令。
在本发明的一个实施例中,上述装置中,加解密函数的加密因子根据对目标字段的存取操作而改变。
在本实施例中,通过选取特别的加解密函数进一步提升了加固后应用的安全性。一些恶意程序通过暴力破解等方式获取加解密函数的加密因子,因此在本实施例中,选取的加解密函数可以在每次执行后,变更加密因子,即实现了加密因子根据对目标字段的存取操作而改变,进一步增加了安全性。
综上所述,本发明的技术方案,通过获取待加固应用的若干个目标动态链接库dll文件,为其添加加固模块,借由加固模块对dll中标记的目标字段的存取过程进行加解密处理,实现了对字段的保护,实现了应用的加固。该技术方案的有益效果在于,一方面为应用提供了保护,使其不能通过读取内存的方式轻易被破解,另一方面又不需要应用开发者在开发过程中增加过多工作量,只需要对待保护的字段进行标记即可,在降低开发者工作量的同时,提高了应用的安全性。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的若干个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的若干个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的应用加固装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图3示出了根据本发明一个实施例的电子设备的结构示意图。该电子设备包括处理器310和被安排成存储计算机可执行指令(计算机可读程序代码)的存储器320。存储器320可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器320具有存储用于执行上述方法中的任何方法步骤的计算机可读程序代码331的存储空间330。例如,用于存储计算机可读程序代码的存储空间330可以包括分别用于实现上面的方法中的各种步骤的各个计算机可读程序代码331。计算机可读程序代码331可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图4所述的计算机可读存储介质。图4示出了根据本发明一个实施例的一种计算机可读存储介质的结构示意图。该计算机可读存储介质400存储有用于执行根据本发明的方法步骤的计算机可读程序代码331,可以被电子设备300的处理器310读取,当计算机可读程序代码331由电子设备300运行时,导致该电子设备300执行上面所描述的方法中的各个步骤,具体来说,该计算机可读存储介质存储的计算机可读程序代码331可以执行上述任一实施例中示出的方法。计算机可读程序代码331可以以适当形式进行压缩。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例公开了A1、一种应用加固方法,包括:
获取待加固应用的若干个目标动态链接库dll文件,所述目标dll文件中包含被标记的若干个目标字段;
为所述目标dll文件添加加固模块,所述加固模块用于对所述目标字段的存取过程进行加解密处理。
A2、如A1所述的方法,其中,所述获取待加固应用的若干个动态链接库目标dll文件包括:
获取所述待加固应用的安装包;
对所述安装包进行解包,得到若干个dll文件;
从所述若干个dll文件中选取若干个目标dll文件。
A3、如A2所述的方法,其中,该方法还包括:
根据添加加固模块后的目标dll文件重新生成安装包。
A4、如A1所述的方法,其中,所述目标字段是基于C#的属性特性进行标记的。
A5、如A1所述的方法,其中,所述加固模块为包含加解密函数的dll文件,所述为所述目标dll文件添加加固模块包括:
将目标dll文件和包含加解密函数的dll文件进行合并。
A6、如A5所述的方法,其中,所述为所述目标dll文件添加加固模块还包括:
从所述目标dll文件中查找出所述目标字段,以及查找出目标字段的存取指令;
根据所述加解密函数对所述存取指令进行加解密。
A7、如A6所述的方法,其中,所述根据所述加解密函数对所述存取指令进行加解密包括:
对于存指令,根据加密函数对存至计算栈的值进行加密处理;
对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
A8、如A6所述的方法,其中,所述加解密函数的加密因子根据对目标字段的存取操作而改变。
本发明的实施例还公开了B9、一种应用加固装置,包括:
获取单元,适于获取待加固应用的若干个目标动态链接库dll文件,所述目标dll文件中包含被标记的若干个目标字段;
加固单元,适于为所述目标dll文件添加加固模块,所述加固模块用于对所述目标字段的存取过程进行加解密处理。
B10、如B9所述的装置,其中,
所述获取单元,适于获取所述待加固应用的安装包;对所述安装包进行解包,得到若干个dll文件;从所述若干个dll文件中选取若干个目标dll文件。
B11、如B10所述的装置,其中,该装置还包括:
打包单元,适于根据添加加固模块后的目标dll文件重新生成安装包。
B12、如B9所述的装置,其中,所述目标字段是基于C#的属性特性进行标记的。
B13、如B9所述的装置,其中,所述加固模块为包含加解密函数的dll文件;
所述加固单元,适于将目标dll文件和包含加解密函数的dll文件进行合并。
B14、如B13所述的装置,其中,
所述加固单元,还适于从所述目标dll文件中查找出所述目标字段,以及查找出目标字段的存取指令;根据所述加解密函数对所述存取指令进行加解密。
B15、如B14所述的装置,其中,
所述加固单元,适于对于存指令,根据加密函数对存至计算栈的值进行加密处理;对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
B16、如B13所述的装置,其中,所述加解密函数的加密因子根据对目标字段的存取操作而改变。
本发明的实施例还公开了C17、一种电子设备,其中,该电子设备包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如A1-A8中任一项所述的方法。
本发明的实施例还公开了D18、一种计算机可读存储介质,其中,所述计算机可读存储介质存储若干个程序,所述若干个程序当被处理器执行时,实现如A1-A8中任一项所述的方法。

Claims (16)

1.一种应用加固方法,包括:
获取待加固应用的若干个目标动态链接库dll文件,所述目标dll文件中包含被标记的若干个目标字段;
为所述目标dll文件添加加固模块,所述加固模块用于对所述目标字段的存取过程进行加解密处理;其中,
所述加固模块为包含加解密函数的dll文件,所述加解密函数的加密因子根据对目标字段的存取操作而改变。
2.如权利要求1所述的方法,其中,所述获取待加固应用的若干个动态链接库目标dll文件包括:
获取所述待加固应用的安装包;
对所述安装包进行解包,得到若干个dll文件;
从所述若干个dll文件中选取若干个目标dll文件。
3.如权利要求2所述的方法,其中,该方法还包括:
根据添加加固模块后的目标dll文件重新生成安装包。
4.如权利要求1所述的方法,其中,所述目标字段是基于C#的属性特性进行标记的。
5.如权利要求1所述的方法,其中,所述为所述目标dll文件添加加固模块包括:
将目标dll文件和包含加解密函数的dll文件进行合并。
6.如权利要求5所述的方法,其中,所述为所述目标dll文件添加加固模块还包括:
从所述目标dll文件中查找出所述目标字段,以及查找出目标字段的存取指令;
根据所述加解密函数对所述存取指令进行加解密。
7.如权利要求6所述的方法,其中,所述根据所述加解密函数对所述存取指令进行加解密包括:
对于存指令,根据加密函数对存至计算栈的值进行加密处理;
对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
8.一种应用加固装置,包括:
获取单元,适于获取待加固应用的若干个目标动态链接库dll文件,所述目标dll文件中包含被标记的若干个目标字段;
加固单元,适于为所述目标dll文件添加加固模块,所述加固模块用于对所述目标字段的存取过程进行加解密处理;其中,
所述加固模块为包含加解密函数的dll文件,所述加解密函数的加密因子根据对目标字段的存取操作而改变。
9.如权利要求8所述的装置,其中,
所述获取单元,适于获取所述待加固应用的安装包;对所述安装包进行解包,得到若干个dll文件;从所述若干个dll文件中选取若干个目标dll文件。
10.如权利要求9所述的装置,其中,该装置还包括:
打包单元,适于根据添加加固模块后的目标dll文件重新生成安装包。
11.如权利要求8所述的装置,其中,所述目标字段是基于C#的属性特性进行标记的。
12.如权利要求8所述的装置,其中,
所述加固单元,适于将目标dll文件和包含加解密函数的dll文件进行合并。
13.如权利要求12所述的装置,其中,
所述加固单元,还适于从所述目标dll文件中查找出所述目标字段,以及查找出目标字段的存取指令;根据所述加解密函数对所述存取指令进行加解密。
14.如权利要求13所述的装置,其中,
所述加固单元,适于对于存指令,根据加密函数对存至计算栈的值进行加密处理;对于取指令,根据解密函数对从计算栈取出的值进行解密处理。
15.一种电子设备,其中,该电子设备包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其中,所述计算机可读存储介质存储若干个程序,所述若干个程序当被处理器执行时,实现如权利要求1-7中任一项所述的方法。
CN201811182283.0A 2018-10-11 2018-10-11 应用加固方法、装置、电子设备和存储介质 Active CN109492353B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811182283.0A CN109492353B (zh) 2018-10-11 2018-10-11 应用加固方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811182283.0A CN109492353B (zh) 2018-10-11 2018-10-11 应用加固方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN109492353A CN109492353A (zh) 2019-03-19
CN109492353B true CN109492353B (zh) 2024-04-16

Family

ID=65690285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811182283.0A Active CN109492353B (zh) 2018-10-11 2018-10-11 应用加固方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN109492353B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761475A (zh) * 2013-12-30 2014-04-30 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN104021321A (zh) * 2014-06-17 2014-09-03 北京奇虎科技有限公司 软件安装包的加固保护方法和装置
CN105426777A (zh) * 2015-11-17 2016-03-23 中科创达软件股份有限公司 一种动态链接库文件加密、解密方法及装置
CN106203006A (zh) * 2016-08-31 2016-12-07 北京鼎源科技有限公司 基于dex与so文件动态执行的Android应用加固方法
WO2016201853A1 (zh) * 2015-06-15 2016-12-22 中兴通讯股份有限公司 加解密功能的实现方法、装置及服务器
CN106709282A (zh) * 2016-06-28 2017-05-24 腾讯科技(深圳)有限公司 资源文件解密方法及装置
CN107103215A (zh) * 2017-04-27 2017-08-29 北京洋浦伟业科技发展有限公司 一种apk安装方法及装置
CN107122634A (zh) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 软件安装包的加固保护方法及装置
CN107122637A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种apk加固方法及装置
CN107122636A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种基于so文件的apk加固方法及装置
CN107292135A (zh) * 2017-06-06 2017-10-24 网易(杭州)网络有限公司 一种程序代码保护方法和装置
CN107291485A (zh) * 2016-04-11 2017-10-24 北京京东尚科信息技术有限公司 动态链接库的加固方法、运行方法、加固装置和安全系统
CN107977552A (zh) * 2017-12-04 2018-05-01 北京奇虎科技有限公司 一种安卓应用的加固方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877329B2 (en) * 2005-09-23 2011-01-25 Business Objects Software Ltd. Apparatus and method for processing license keys using dynamic field mapping

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761475A (zh) * 2013-12-30 2014-04-30 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN104021321A (zh) * 2014-06-17 2014-09-03 北京奇虎科技有限公司 软件安装包的加固保护方法和装置
WO2016201853A1 (zh) * 2015-06-15 2016-12-22 中兴通讯股份有限公司 加解密功能的实现方法、装置及服务器
CN105426777A (zh) * 2015-11-17 2016-03-23 中科创达软件股份有限公司 一种动态链接库文件加密、解密方法及装置
CN107291485A (zh) * 2016-04-11 2017-10-24 北京京东尚科信息技术有限公司 动态链接库的加固方法、运行方法、加固装置和安全系统
CN106709282A (zh) * 2016-06-28 2017-05-24 腾讯科技(深圳)有限公司 资源文件解密方法及装置
CN106203006A (zh) * 2016-08-31 2016-12-07 北京鼎源科技有限公司 基于dex与so文件动态执行的Android应用加固方法
CN107122634A (zh) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 软件安装包的加固保护方法及装置
CN107103215A (zh) * 2017-04-27 2017-08-29 北京洋浦伟业科技发展有限公司 一种apk安装方法及装置
CN107122636A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种基于so文件的apk加固方法及装置
CN107122637A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种apk加固方法及装置
CN107292135A (zh) * 2017-06-06 2017-10-24 网易(杭州)网络有限公司 一种程序代码保护方法和装置
CN107977552A (zh) * 2017-12-04 2018-05-01 北京奇虎科技有限公司 一种安卓应用的加固方法和装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
PE文件动态加壳技术的研究与实现;庞立会;;计算机工程;20081005(第19期);166-168+172 *
一种ART模式下应用加固方案;张洪睿;张亚腾;;软件;20151215(第12期);184-187 *
基于Android平台的SO加固技术研究;韩子诺;刘嘉勇;;现代计算机(专业版);20151225(第36期);51-55 *
基于LLVM的Android Native文件保护方法;张一峰;方勇;;通信技术;20170310(第03期);145-150 *

Also Published As

Publication number Publication date
CN109492353A (zh) 2019-03-19

Similar Documents

Publication Publication Date Title
US10740443B2 (en) System and method for code obfuscation of application
US8996882B2 (en) Execution method of .NET program after encryption
EP1410150B1 (en) Protecting software applications against software piracy
US9639377B2 (en) Method for linking and loading to protect applications
US10586026B2 (en) Simple obfuscation of text data in binary files
CN107977552B (zh) 一种安卓应用的加固方法和装置
US20160364707A1 (en) Potentate: A Cryptography-Obfuscating, Self-Policing, Pervasive Distribution System For Digital Content
CN105653432B (zh) 一种崩溃数据的处理方法和装置
EP3552093B1 (en) Application piracy prevention with secure enclave protection of automatically modularized functions
CN109784007B (zh) 一种字节码加密的方法、字节码解密的方法及终端
US20080270806A1 (en) Execution Device
CN108932406A (zh) 虚拟化软件保护方法和装置
CN109062582A (zh) 一种应用安装包的加密方法及装置
CN106599629A (zh) 一种安卓应用程序加固方法及装置
CN104798075A (zh) 应用随机化
CN106845167A (zh) 一种apk的加固方法和装置,及动态加载方法和装置
US10867017B2 (en) Apparatus and method of providing security and apparatus and method of executing security for common intermediate language
CN111680272A (zh) 一种字节码加密和解密方法及装置
CN110309630A (zh) 一种Java代码加密方法及装置
CN104537281A (zh) 用于移动应用保护的系统和方法
KR101823226B1 (ko) 코드 보호 방법 및 시스템
CN109492353B (zh) 应用加固方法、装置、电子设备和存储介质
CN107341372B (zh) 一种软件保护方法和装置
Lee et al. VODKA: Virtualization obfuscation using dynamic key approach
CN109840396B (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