CN110147653A - 应用程序安全加固方法及装置 - Google Patents

应用程序安全加固方法及装置 Download PDF

Info

Publication number
CN110147653A
CN110147653A CN201910244968.1A CN201910244968A CN110147653A CN 110147653 A CN110147653 A CN 110147653A CN 201910244968 A CN201910244968 A CN 201910244968A CN 110147653 A CN110147653 A CN 110147653A
Authority
CN
China
Prior art keywords
file
executable file
segment
data segment
encrypted
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
CN201910244968.1A
Other languages
English (en)
Other versions
CN110147653B (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.)
Jiangsu Payegis Information Security Technology Co ltd
Jiangsu Tongfudun Technology Co Ltd
Original Assignee
江苏通付盾信息安全技术有限公司
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 江苏通付盾信息安全技术有限公司 filed Critical 江苏通付盾信息安全技术有限公司
Priority to CN201910244968.1A priority Critical patent/CN110147653B/zh
Publication of CN110147653A publication Critical patent/CN110147653A/zh
Application granted granted Critical
Publication of CN110147653B publication Critical patent/CN110147653B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

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

本发明公开了一种应用程序安全加固方法及装置。其中,方法包括:从应用程序中的预设应用文件中提取可执行文件;对可执行文件进行解析,以获取可执行文件中的数据段和/或链接段;针对可执行文件中的数据段和/或链接段进行加密处理。本方案通过对二进制文件数据段和/或链接段进行加密处理,可实现对应用程序的加固,从而大幅提升应用程序的逆向难度,有效防止对应用程序的逆向分析,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。

Description

应用程序安全加固方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种应用程序安全加固方法及装置。
背景技术
随着科学技术与社会的不断发展,各种应用程序的数量也飞速增长。然而,程序逆向开发人员或程序逆向产品往往通过对应用程序的反编译,可以轻易地实现对应用程序的破解及攻击,从而威胁应用程序安全。
目前,为防止对应用程序的逆向破解,现有技术中存在许多对应用程序进行加固的产品及方法。然而,发明人在实现本发明的过程中发现,现有技术中的上述方式至少存在下述缺陷:
现有技术中提供的程序加固方法通常为在程序中添加花指令等代码混淆方法,然而,该种加固方法常常会引起程序膨胀,浪费系统资源;并且,现有的程序加固方法是在编译过程中,由设置于开发者终端中的编译器来完成,从而无法实现程序加固方法的批量维护,维护成本高。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序安全加固方法及装置。
根据本发明的一个方面,提供了一种应用程序安全加固方法,包括:
从应用程序中的预设应用文件中提取可执行文件;
对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
针对所述可执行文件中的数据段和/或链接段进行加密处理。
根据本发明的另一方面,提供了一种应用程序安全加固装置,包括:
提取模块,适于从应用程序中的预设应用文件中提取可执行文件;
获取模块,适于对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
加密模块,适于针对所述可执行文件中的数据段和/或链接段进行加密处理。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述应用程序安全加固方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述应用程序安全加固方法对应的操作。
根据本发明提供的应用程序安全加固方法及装置,首先从应用程序中的预设应用文件中提取可执行文件;进一步对可执行文件进行解析,以获取可执行文件中的数据段和/或链接段;最终针对可执行文件中的数据段和/或链接段进行加密处理。本方案通过对二进制文件数据段和/或链接段进行加密处理,可实现对应用程序的加固,从而大幅提升应用程序的逆向难度,有效防止对应用程序的逆向分析,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例提供的一种应用程序安全加固方法的流程示意图;
图2示出了根据本发明另一个实施例提供的一种应用程序安全加固方法的流程示意图;
图3示出了根据本发明一个实施例提供的一种应用程序安全加固装置的功能结构示意图;
图4示出了根据本发明一个实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例提供的一种应用程序安全加固方法的流程示意图。其中,本实施例所提供的应用程序安全加固方法可以应用于IOS和/或MachOS系统中。如图1所示,该方法包括:
步骤S110,从应用程序中的预设应用文件中提取可执行文件。
其中,预设应用文件具体为应用程序安装包。本实施所提供的程序加固方法,不同于现有技术中在编译器阶段(未形成可执行文件)对程序进行加固。本申请可以基于已经生成的可执行文件,进行应用程序的加固,从而本申请可以避免现有技术中因通过开发者终端中的编译器进行程序加固而带来的无法批量维护及维护成本高的弊端。
在实际的实施过程中,IOS系统中的应用程序安装包(此处为预设应用文件)通常为IPA(iPhoneApplication)安装包,为从IPA安装包中提取可执行文件,首先需对IPA安装包进行解压(例如通过unzip命令进行解压),进而对解压之后的文件进行筛选识别,以获得可执行文件。例如,在IOS系统中,可执行文件通常为Mach-O格式,从而可通过格式信息来进行可执行文件的提取。
步骤S120,对可执行文件进行解析,以获取可执行文件中的数据段和/或链接段。
在从预设应用文件中提取可执行文件中提取可执行文件之后,本申请并非是对应用程序代码段中的代码进行代码混淆处理,而是对可执行文件进行解析,确定可执行文件中的数据段和/或链接段。其中,可根据数据段和/或链接段的段标识来快速准确地确定可执行文件中的数据段和/或链接段。例如,“__DATA”为数据段标识等等。
步骤S130,针对可执行文件中的数据段和/或链接段进行加密处理。
本实施例中是针对可执行文件中的数据段和/或链接段进行加密处理,从而可避免代码膨胀,并可实现对应用程序的有效防护。
由此可见,本实施例从应用程序中的预设应用文件中提取可执行文件;对可执行文件进行解析,以获取可执行文件中的数据段和/或链接段;针对可执行文件中的数据段和/或链接段进行加密处理。本方案通过对二进制文件数据段和/或链接段进行加密处理,可实现对应用程序的加固,从而大幅提升应用程序的逆向难度,有效防止对应用程序的逆向分析,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。
图2示出了根据本发明另一个实施例提供的一种应用程序安全加固方法的流程示意图。其中,本实施所提供的应用程序安全加固方法是以加壳技术为基础。如图2所示,该方法包括:
步骤S210,从应用程序中的预设应用文件中提取可执行文件。
其中,预设应用文件具体为应用程序安装包,在IOS系统中的应用程序安装包通常为IPA安装包。本实施所提供的程序加固方法,可以基于已经生成的应用程序安装包,进行应用程序的加固,从而本申请可以避免现有技术中因通过开发者终端中的编译器进行程序加固而带来的无法批量维护及维护成本高的弊端。
在实际的实施过程中,为从IPA安装包中提取可执行文件,首先需对IPA安装包进行解压(例如通过unzip命令进行解压),进而对解压之后的文件进行筛选识别,以获得可执行文件。例如,在IOS系统中,可执行文件通常为Mach-O格式,从而可通过格式信息来进行可执行文件的提取。
步骤S220,在可执行文件的文件头中添加加载壳代码命令,并使加载壳代码命令位于所有加载命令的首位。
其中,加载壳代码命令用于加载壳代码文件。而壳代码用于执行对应用程序的加壳保护,本实施例中壳代码具体用于执行步骤S230和/或步骤S240。
在具体的实施过程中,可先确定可执行文件的文件头中是否已存在有加载壳代码命令,若否,则在可执行文件的文件头中添加加载壳代码命令。并且,为保障加载壳代码命令能够在加载命令中最先被执行,本步骤中将加载壳代码命令移动至所有加载命令的首位,从而使得在程序运行时可以对应用程序进行加壳保护。
步骤S230,获取可执行文件中的数据段,针对数据段中预设信息的存放位置进行加密处理。
其中,预设信息可以为多种,例如,数据段中预设信息包括以下信息中的至少一种:开发者定义的函数名、属性名、变量名、选择器,以及预设常量信息。则可采用与预设信息的类型相对应的加密方法对该预设信息的存放位置进行加密处理。具体地,针对数据段中预设信息的存放位置进行加密处理具体为,针对数据段中预设信息所对应的地址指针,进行偏移处理。
针对于预设常量信息,可获取预设常量信息对应的常量数据存储参数(常量数据存储参数包括索引位置指针和/或常量数据长度标志);对预设常量信息对应的索引位置指针进行偏移处理,和/或,更改预设常量信息对应的常量数据长度标志的内容。其中,预设常量信息对应的索引位置指针用于指向预设常量信息的存储位置,而常量数据长度标志用于标识预设常量信息的长度。由此可看出,本申请并不对预设常量信息本身进行修改等处理,而是对预设常量信息的存储参数(索引位置指针和/或常量数据长度)进行加密保护,从而有利于减少代码膨胀,并利于加固效率的提升。其中,为保障程序的正常运行,在对预设常量信息对应的常量数据存储参数进行加密处理之后,预设常量信息当前对应的索引位置指针指向的存储位置为可读属性;和/或,预设常量信息当前对应的索引位置指针指向的存储位置能够修改为可读属性;和/或,预设常量信息当前对应的索引位置指针偏移常量数据当前对应的常量数据长度之后所指向的存储位置,为可读属性;和/或,预设常量信息当前对应的索引位置指针偏移常量数据当前对应的常量数据长度之后所指向的存储位置,能够修改为可读属性。
针对于开发者定义的函数名、属性名、变量名、选择器等数据段符号数据,则可获取该数据段符号数据对应的索引位置指针;对数据段符号数据对应的索引位置指针进行偏移处理。其中,在对该数据段符号数据进行加密处理之后,数据段符号数据当前对应的索引位置指针指向的存储位置为可读属性;和/或,数据段符号数据当前对应的索引位置指针指向的存储位置能够修改为可读属性。从而保证程序能够正常运行。进一步可选的,在对与选择器相关的索引位置指针进行偏移处理之后,可进一步地使选择器的索引位置指针位于类或分类的方法密文列表中,从而保证选择器在呈现运行时能够正常运行。
在一种可选的实施方式中,也可以采用对称加密算法对数据段中预设信息的存放位置进行加密处理。其中,本实施例对具体的对称加密算法不做限定。
步骤S240,获得可执行文件中存放动态链接符号的链接段,针对存放动态链接符号的链接段进行加密处理。
具体地,从可执行文件的链接段中确定出系统符号数据节表的开始位置及结束位置,基于系统符号数据节表的开始位置及结束位置,采用预设加密算法进行加密。例如,可根据系统符号数据节表的开始位置及结束位置,对系统符号数据节表全部或部分内容进行加密处理。
其中,本实施例对步骤S230及步骤S240的具体执行顺序不做限定,步骤S230及步骤S240可并行或顺次执行。并且,本领域技术人员可针对可执行文件中数据段和/或链接段中信息的全部或者部分进行加密处理,并在加密处理之后生成配置文件。其中,该配置文件中可以记载有对数据段和/或链接段中进行加密保护的信息的名称及内存位置等等。
步骤S250,将应用程序的预设关联信息存储于比对文件中,以供应用程序运行过程中,根据比对文件确定应用程序是否受到篡改。
为进一步提升对应用程序的安全加固效果,本实施例还进一步生成有比对文件。其中,比对文件中存储有应用程序的预设关联信息。其中,该预设关联信息可以为:对应用程序包名称加密后的数据、对IPA签名证书归属组织序列号进行加密后的数据、图片和/或js文件进行哈希运算之后的哈希值等等。
在应用程序运行时,若监测到应用程序运行过程中预设关联信息与比对文件中的信息不一致,则确定应用程序受到攻击,从而实现对应用程序的快速检测,避免应用程序被动态分析。
步骤S260,从预设应用文件中提取资源文件,以及,将针对可执行文件中的数据段和/或链接段进行加密处理后生成的配置文件、壳代码文件、资源文件、和/或预设应用文件进行重打包。
为实现对应用程序的整体安全防护,本实施例进一步从预设应用文件中提取资源文件,并结合针对可执行文件中的数据段和/或链接段进行加密处理后生成的配置文件、壳代码文件和/或预设应用文件进行重打包,从而生成新的与应用文件。
步骤S270,对重打包之后的文件进行重签名。
在步骤S260进行重打包之后,进一步采用相应的签名方式对重打包之后的文件进行重签名,以实现对应用程序的整体防护。其中,本实施例对具体的重签名方式不做限定,例如可采用codesign等工具进行重签名。
可选的,为进一步提升应用程序的安全防护效果,本实施例中还可以在程序运行时进行运行环境的检测(如网络环境检测等),并对客户端数据进行防窃取操作等等。
由此可见,本实施例提供的应用程序安全加固方法可以基于加壳技术对应用程序进行整体的安全防护,并可以基于已经生成的可执行文件,进行应用程序的安全防护,从而可以避免现有技术中因通过开发者终端中的编译器进行程序加固而带来的无法批量维护及维护成本高的弊端;并且,本实施例将加载壳代码置于加载命令的首位,从而保障程序运行时首先执行加壳程序,保障应用程序的安全防护。
进一步地,本实施例对数据段中的常量数据、符号数据及链接段符号数据进行加密处理,可全方位地实现对应用程序的加固,防止应用程序被动态或静态分析,从而加大对应用程序的逆向难度;并且,本实施例中,对数据段和/或链接段等非代码段的加密,有利于减少代码膨胀,利于加固效率的提升,并具有较优的加固效果;此外,本方案实施过程简单灵活,易于批量维护,维护成本低,易于大规模应用与实施。
图3示出了根据本发明一个实施例提供的一种应用程序安全加固装置的功能结构示意图。如图3所示,该装置包括:提取模块31、获取模块32、及加密模块33。
提取模块31,适于从应用程序中的预设应用文件中提取可执行文件;
获取模块32,适于对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
加密模块33,适于针对所述可执行文件中的数据段和/或链接段进行加密处理。
可选的,加密模块33进一步适于:获取所述可执行文件中的数据段,针对所述数据段中预设信息的存放位置进行加密处理。
可选的,所述数据段中预设信息包括以下信息中的至少一种:开发者定义的函数名、属性名、变量名、选择器,以及预设常量信息。
可选的,加密模块33进一步适于:采用对称加密算法对所述数据段中预设信息的存放位置进行加密处理。
可选的,加密模块33进一步适于:针对所述数据段中预设信息所对应的地址指针,进行偏移处理。
可选的,加密模块33进一步适于:获得所述可执行文件中存放动态链接符号的链接段,针对所述存放动态链接符号的链接段进行加密处理。
可选的,该装置还包括:添加模块(图中未示出),适于在所述可执行文件的文件头中添加加载壳代码命令,并使所述加载壳代码命令位于所有加载命令的首位;其中,所述加载壳代码命令用于加载壳代码文件。
可选的,该装置还包括:资源提取模块(图中未示出),适于从所述预设应用文件中提取资源文件;
以及,重打包模块(图中未示出),适于将所述针对所述可执行文件中的数据段和/或链接段进行加密处理后生成的配置文件、所述壳代码文件、所述资源文件、和/或所述预设应用文件进行重打包。
可选的,该装置还包括:重签名模块(图中未示出),适于对重打包之后的文件进行重签名。
可选的,该装置还包括:比对文件生成模块(图中未示出),适于将所述应用程序的预设关联信息存储于比对文件中,以供应用程序运行过程中,根据所述比对文件确定所述应用程序是否受到篡改。
其中,本实施例所提供的装置中各模块的具体实施过程可参照图1和/或图2所示方法实施例中响应部分的描述,本实施例在此不做赘述。
由此可见,本实施例从应用程序中的预设应用文件中提取可执行文件;对可执行文件进行解析,以获取可执行文件中的数据段和/或链接段;针对可执行文件中的数据段和/或链接段进行加密处理。本方案通过对二进制文件数据段和/或链接段进行加密处理,可实现对应用程序的加固,从而大幅提升应用程序的逆向难度,有效防止对应用程序的逆向分析,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。
根据本发明一个实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的应用程序安全加固方法。
图4示出了根据本发明一个实施例提供的一种计算设备的的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图4所示,该计算设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:
处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述应用程序安全加固方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行以下操作:
从应用程序中的预设应用文件中提取可执行文件;
对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
针对所述可执行文件中的数据段和/或链接段进行加密处理。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
获取所述可执行文件中的数据段,针对所述数据段中预设信息的存放位置进行加密处理。
在一种可选的实施方式中,所述数据段中预设信息包括以下信息中的至少一种:
开发者定义的函数名、属性名、变量名、选择器,以及预设常量信息。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
采用对称加密算法对所述数据段中预设信息的存放位置进行加密处理。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
针对所述数据段中预设信息所对应的地址指针,进行偏移处理。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
获得所述可执行文件中存放动态链接符号的链接段,针对所述存放动态链接符号的链接段进行加密处理。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
在所述可执行文件的文件头中添加加载壳代码命令,并使所述加载壳代码命令位于所有加载命令的首位;其中,所述加载壳代码命令用于加载壳代码文件。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
以及,将所述针对所述可执行文件中的数据段和/或链接段进行加密处理后生成的配置文件、所述壳代码文件、所述资源文件、和/或所述预设应用文件进行重打包。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
对重打包之后的文件进行重签名。
在一种可选的实施方式中,程序410具体可以用于使得处理器402执行以下操作:
将所述应用程序的预设关联信息存储于比对文件中,以供应用程序运行过程中,根据所述比对文件确定所述应用程序是否受到篡改。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的应用程序安全加固装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:A1.一种应用程序安全加固方法,包括:
从应用程序中的预设应用文件中提取可执行文件;
对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
针对所述可执行文件中的数据段和/或链接段进行加密处理。
A2.根据A1所述的方法,其中,所述获取所述可执行文件中的数据段和/或链接段;针对所述可执行文件中的数据段和/或链接段进行加密处理进一步包括:
获取所述可执行文件中的数据段,针对所述数据段中预设信息的存放位置进行加密处理。
A3.根据A2所述的方法,其中,所述数据段中预设信息包括以下信息中的至少一种:
开发者定义的函数名、属性名、变量名、选择器,以及预设常量信息。
A4.根据A3所述的方法,其中,所述针对所述数据段中预设信息的存放位置进行加密处理进一步包括:
采用对称加密算法对所述数据段中预设信息的存放位置进行加密处理。
A5.根据A3所述的方法,其中,所述针对所述数据段中预设信息的存放位置进行加密处理进一步包括:
针对所述数据段中预设信息所对应的地址指针,进行偏移处理。
A6.根据A1所述的方法,其中,所述获取所述可执行文件中的数据段和/或链接段;针对所述可执行文件中的数据段和/或链接段进行加密处理进一步包括:
获得所述可执行文件中存放动态链接符号的链接段,针对所述存放动态链接符号的链接段进行加密处理。
A7.根据A1-A6中任一项所述的方法,其中,在所述从应用程序中的预设应用文件中提取可执行文件之后,所述方法还包括:
在所述可执行文件的文件头中添加加载壳代码命令,并使所述加载壳代码命令位于所有加载命令的首位;其中,所述加载壳代码命令用于加载壳代码文件。
A8.根据A7所述的方法,其中,所述方法还包括:从所述预设应用文件中提取资源文件;
以及,将所述针对所述可执行文件中的数据段和/或链接段进行加密处理后生成的配置文件、所述壳代码文件、所述资源文件、和/或所述预设应用文件进行重打包。
A9.根据A8所述的方法,其中,所述方法还包括:对重打包之后的文件进行重签名。
A10.根据A1-A6中任一项所述的方法,其中,所述方法还包括:
将所述应用程序的预设关联信息存储于比对文件中,以供应用程序运行过程中,根据所述比对文件确定所述应用程序是否受到篡改。
本发明还公开了:B11.一种应用程序安全加固装置,包括:
提取模块,适于从应用程序中的预设应用文件中提取可执行文件;
获取模块,适于对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
加密模块,适于针对所述可执行文件中的数据段和/或链接段进行加密处理。
B12.根据B11所述的装置,其中,所述加密模块进一步适于:
获取所述可执行文件中的数据段,针对所述数据段中预设信息的存放位置进行加密处理。
B13.根据B12所述的装置,其中,所述数据段中预设信息包括以下信息中的至少一种:
开发者定义的函数名、属性名、变量名、选择器,以及预设常量信息。
B14.根据B13所述的装置,其中,所述加密模块进一步适于:
采用对称加密算法对所述数据段中预设信息的存放位置进行加密处理。
B15.根据B13所述的装置,其中,所述加密模块进一步适于:
针对所述数据段中预设信息所对应的地址指针,进行偏移处理。
B16.根据B11所述的装置,其中,所述加密模块进一步适于:
获得所述可执行文件中存放动态链接符号的链接段,针对所述存放动态链接符号的链接段进行加密处理。
B17.根据B11-B16中任一项所述的装置,其中,所述装置还包括:
添加模块,适于在所述可执行文件的文件头中添加加载壳代码命令,并使所述加载壳代码命令位于所有加载命令的首位;其中,所述加载壳代码命令用于加载壳代码文件。
B18.根据B17所述的装置,其中,所述装置还包括:
资源提取模块,适于从所述预设应用文件中提取资源文件;
以及,重打包模块,适于将所述针对所述可执行文件中的数据段和/或链接段进行加密处理后生成的配置文件、所述壳代码文件、所述资源文件、和/或所述预设应用文件进行重打包。
B19.根据B18所述的装置,其中,所述装置还包括:
重签名模块,适于对重打包之后的文件进行重签名。
B20.根据B11-B16中任一项所述的装置,其中,所述装置还包括:
比对文件生成模块,适于将所述应用程序的预设关联信息存储于比对文件中,以供应用程序运行过程中,根据所述比对文件确定所述应用程序是否受到篡改。
本发明还公开了:C21.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如A1-A10中任一项所述的应用程序安全加固方法对应的操作。
本发明还公开了:D22.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如A1-A10中任一项所述的应用程序安全加固方法对应的操作。

Claims (10)

1.一种应用程序安全加固方法,其特征在于,包括:
从应用程序中的预设应用文件中提取可执行文件;
对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
针对所述可执行文件中的数据段和/或链接段进行加密处理。
2.根据权利要求1所述的方法,其特征在于,所述获取所述可执行文件中的数据段和/或链接段;针对所述可执行文件中的数据段和/或链接段进行加密处理进一步包括:
获取所述可执行文件中的数据段,针对所述数据段中预设信息的存放位置进行加密处理。
3.根据权利要求2所述的方法,其特征在于,所述数据段中预设信息包括以下信息中的至少一种:
开发者定义的函数名、属性名、变量名、选择器,以及预设常量信息。
4.根据权利要求3所述的方法,其特征在于,所述针对所述数据段中预设信息的存放位置进行加密处理进一步包括:
采用对称加密算法对所述数据段中预设信息的存放位置进行加密处理。
5.根据权利要求3所述的方法,其特征在于,所述针对所述数据段中预设信息的存放位置进行加密处理进一步包括:
针对所述数据段中预设信息所对应的地址指针,进行偏移处理。
6.根据权利要求1所述的方法,其特征在于,所述获取所述可执行文件中的数据段和/或链接段;针对所述可执行文件中的数据段和/或链接段进行加密处理进一步包括:
获得所述可执行文件中存放动态链接符号的链接段,针对所述存放动态链接符号的链接段进行加密处理。
7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述从应用程序中的预设应用文件中提取可执行文件之后,所述方法还包括:
在所述可执行文件的文件头中添加加载壳代码命令,并使所述加载壳代码命令位于所有加载命令的首位;其中,所述加载壳代码命令用于加载壳代码文件。
8.一种应用程序安全加固装置,其特征在于,包括:
提取模块,适于从应用程序中的预设应用文件中提取可执行文件;
获取模块,适于对所述可执行文件进行解析,以获取所述可执行文件中的数据段和/或链接段;
加密模块,适于针对所述可执行文件中的数据段和/或链接段进行加密处理。
9.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的应用程序安全加固方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的应用程序安全加固方法对应的操作。
CN201910244968.1A 2019-03-28 2019-03-28 应用程序安全加固方法及装置 Active CN110147653B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910244968.1A CN110147653B (zh) 2019-03-28 2019-03-28 应用程序安全加固方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910244968.1A CN110147653B (zh) 2019-03-28 2019-03-28 应用程序安全加固方法及装置

Publications (2)

Publication Number Publication Date
CN110147653A true CN110147653A (zh) 2019-08-20
CN110147653B CN110147653B (zh) 2022-04-19

Family

ID=67588735

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910244968.1A Active CN110147653B (zh) 2019-03-28 2019-03-28 应用程序安全加固方法及装置

Country Status (1)

Country Link
CN (1) CN110147653B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990056A (zh) * 2019-11-01 2020-04-10 北京三快在线科技有限公司 逆向分析方法、装置、电子设备及存储介质
WO2021151347A1 (zh) * 2020-05-29 2021-08-05 平安科技(深圳)有限公司 基于iOS应用的加固方法、装置、设备及存储介质
CN113849245A (zh) * 2021-09-23 2021-12-28 武汉深之度科技有限公司 一种应用程序运行方法、计算设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1182532A2 (en) * 2000-08-15 2002-02-27 Sony Computer Entertainment Inc. Information processing apparatus, executable module generating method, and storage medium
CN101288083A (zh) * 2005-10-17 2008-10-15 Nxp股份有限公司 程序可执行映像加密
CN103959247A (zh) * 2011-10-03 2014-07-30 思科技术公司 虚拟化计算机程序中的安全
CN104102860A (zh) * 2014-08-11 2014-10-15 北京奇虎科技有限公司 安卓平台应用程序的保护方法、运行方法、装置及系统
US9762385B1 (en) * 2015-07-20 2017-09-12 Trend Micro Incorporated Protection of program code of apps of mobile computing devices
CN109062582A (zh) * 2018-07-23 2018-12-21 北京云测信息技术有限公司 一种应用安装包的加密方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1182532A2 (en) * 2000-08-15 2002-02-27 Sony Computer Entertainment Inc. Information processing apparatus, executable module generating method, and storage medium
CN101288083A (zh) * 2005-10-17 2008-10-15 Nxp股份有限公司 程序可执行映像加密
CN103959247A (zh) * 2011-10-03 2014-07-30 思科技术公司 虚拟化计算机程序中的安全
CN104102860A (zh) * 2014-08-11 2014-10-15 北京奇虎科技有限公司 安卓平台应用程序的保护方法、运行方法、装置及系统
US9762385B1 (en) * 2015-07-20 2017-09-12 Trend Micro Incorporated Protection of program code of apps of mobile computing devices
CN109062582A (zh) * 2018-07-23 2018-12-21 北京云测信息技术有限公司 一种应用安装包的加密方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990056A (zh) * 2019-11-01 2020-04-10 北京三快在线科技有限公司 逆向分析方法、装置、电子设备及存储介质
WO2021151347A1 (zh) * 2020-05-29 2021-08-05 平安科技(深圳)有限公司 基于iOS应用的加固方法、装置、设备及存储介质
CN113849245A (zh) * 2021-09-23 2021-12-28 武汉深之度科技有限公司 一种应用程序运行方法、计算设备及存储介质
CN113849245B (zh) * 2021-09-23 2023-09-12 武汉深之度科技有限公司 一种应用程序运行方法、计算设备及存储介质

Also Published As

Publication number Publication date
CN110147653B (zh) 2022-04-19

Similar Documents

Publication Publication Date Title
CN106778103B (zh) 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN100594509C (zh) 软件保护方法
US10586026B2 (en) Simple obfuscation of text data in binary files
CN104239757B (zh) 应用程序防止逆向的方法及装置、运行方法及终端
CN104463002B (zh) 一种加固apk的方法和装置以及apk加固客户端和服务器
Schulte et al. Automated repair of binary and assembly programs for cooperating embedded devices
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN107977552B (zh) 一种安卓应用的加固方法和装置
CN110147653A (zh) 应用程序安全加固方法及装置
CN105653432B (zh) 一种崩溃数据的处理方法和装置
CN107480476B (zh) 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法
CN108399319B (zh) 源代码保护方法、应用服务器及计算机可读存储介质
CN105095367B (zh) 一种客户端数据的采集方法和装置
CN109598107A (zh) 一种基于应用安装包文件的代码转换方法及装置
CN109241707A (zh) 应用程序的混淆方法、装置和服务器
CN106897587A (zh) 加固应用、加载加固应用的方法和装置
CN108133126B (zh) 一种安卓应用的加固方法和装置
CA3150187C (en) Method and apparatus for protecting web script codes
CN110119601A (zh) 基于应用程序安装包的程序加固方法及装置
CN109960509A (zh) 应用加固的方法、装置、计算设备及计算机存储介质
CN110119600A (zh) 基于应用程序安装包的程序加固方法及装置
CN102314571B (zh) 处理计算机病毒的方法及装置
Joshi et al. Impact of software obfuscation on susceptibility to return-oriented programming attacks
CN106775843B (zh) 基于内存加载的dalvik字节码优化方法
CN110147655A (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
TA01 Transfer of patent application right

Effective date of registration: 20220322

Address after: 215021 4 building, 2.5 Industrial Park, building 2.5, Dongchang Road, Suzhou Industrial Park, Jiangsu, China, C2

Applicant after: JIANGSU PAYEGIS INFORMATION SECURITY TECHNOLOGY Co.,Ltd.

Applicant after: Jiangsu tongfudun Technology Co., Ltd

Address before: 215021 4 building, 2.5 Industrial Park, building 2.5, Dongchang Road, Suzhou Industrial Park, Jiangsu, China, C2

Applicant before: JIANGSU PAYEGIS INFORMATION SECURITY TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant