CN110110506B - 基于应用程序安装包的程序加固方法及装置 - Google Patents

基于应用程序安装包的程序加固方法及装置 Download PDF

Info

Publication number
CN110110506B
CN110110506B CN201910245564.4A CN201910245564A CN110110506B CN 110110506 B CN110110506 B CN 110110506B CN 201910245564 A CN201910245564 A CN 201910245564A CN 110110506 B CN110110506 B CN 110110506B
Authority
CN
China
Prior art keywords
constant data
program
decryption key
binary file
decryption
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.)
Expired - Fee Related
Application number
CN201910245564.4A
Other languages
English (en)
Other versions
CN110110506A (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 Pay Egis Technology Co ltd
Jiangsu Payegis Information Security Technology Co ltd
Original Assignee
Jiangsu Pay Egis Technology Co ltd
Jiangsu Tongfudun Information Security 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 Jiangsu Pay Egis Technology Co ltd, Jiangsu Tongfudun Information Security Technology Co ltd filed Critical Jiangsu Pay Egis Technology Co ltd
Priority to CN201910245564.4A priority Critical patent/CN110110506B/zh
Publication of CN110110506A publication Critical patent/CN110110506A/zh
Application granted granted Critical
Publication of CN110110506B publication Critical patent/CN110110506B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/107License processing; Key processing
    • 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

本发明公开了一种基于应用程序安装包的程序加固方法及装置。其中,方法包括:从应用程序安装包中提取二进制文件,并确定二进制文件数据段中的常量数据;获取常量数据对应的常量数据存储参数;采用预设加密方法,对常量数据对应的常量数据存储参数进行加密处理。本方案通过对二进制文件数据段中常量数据的加密处理,实现对应用程序的加固,从而大幅提升应用程序的逆向难度,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。

Description

基于应用程序安装包的程序加固方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种基于应用程序安装包的程序加固方法及装置。
背景技术
随着科学技术与社会的不断发展,各种应用程序的数量也飞速增长。然而,程序逆向开发人员或程序逆向产品往往通过对应用程序的反编译,可以轻易地实现对应用程序的破解,从而使得对于应用程序盗版及重打包等现象层出不穷。
目前,为防止对应用程序的逆向破解,现有技术中存在许多对应用程序进行加固的产品及方法。然而,发明人在实现本发明的过程中发现,现有技术中的上述方式至少存在下述缺陷:现有技术中提供的程序加固方法通常为在程序中添加花指令等代码混淆方法,然而,该种加固方法常常会引起程序膨胀,浪费系统资源;并且,现有的程序加固方法是在编译过程中,由设置于开发者终端中的编译器来完成,从而无法实现程序加固方法的批量维护,维护成本高。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于应用程序安装包的程序加固方法及装置。
根据本发明的一个方面,提供了一种基于应用程序安装包的程序加固方法,包括:
从所述应用程序安装包中提取二进制文件,并确定所述二进制文件数据段中的常量数据;
获取所述常量数据对应的常量数据存储参数;
采用预设加密方法,对所述常量数据对应的常量数据存储参数进行加密处理。
根据本发明的另一方面,提供了一种基于应用程序安装包的程序加固装置,包括:
确定模块,适于从所述应用程序安装包中提取二进制文件,并确定所述二进制文件数据段中的常量数据;
获取模块,适于获取所述常量数据对应的常量数据存储参数;
加密模块,适于采用预设加密方法,对所述常量数据对应的常量数据存储参数进行加密处理。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述基于应用程序安装包的程序加固方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述基于应用程序安装包的程序加固方法对应的操作。
根据本发明提供的基于应用程序安装包的程序加固方法及装置,首先从应用程序安装包中提取二进制文件,并确定二进制文件数据段中的常量数据;获取常量数据对应的常量数据存储参数;采用预设加密方法,对常量数据对应的常量数据存储参数进行加密处理。本方案通过对二进制文件数据段中常量数据的加密处理,实现对应用程序的加固,从而大幅提升应用程序的逆向难度,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例提供的一种基于应用程序安装包的程序加固方法的流程示意图;
图2示出了根据本发明另一个实施例提供的一种基于应用程序安装包的程序加固方法的流程示意图;
图3示出了根据本发明一个实施例提供的一种基于应用程序安装包的程序加固装置的功能结构示意图;
图4示出了根据本发明一个实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例提供的一种基于应用程序安装包的程序加固方法的流程示意图。其中,本实施例所提供的基于应用程序安装包的程序加固方法可以应用于IOS和/或MachOS系统中。如图1所示,该方法包括:
步骤S110,从应用程序安装包中提取二进制文件,并确定二进制文件数据段中的常量数据。
本实施所提供的程序加固方法,不同于现有技术中在编译器阶段(未形成可执行文件)对程序进行加固。本申请可以基于已经生成的应用程序安装包,进行应用程序的加固,从而本申请可以避免现有技术中因通过开发者终端中的编译器进行程序加固而带来的无法批量维护及维护成本高的弊端。
在实际的实施过程中,IOS系统中的应用程序安装包通常为IPA(iPhoneApplication)安装包,为从IPA安装包中提取二进制文件,首先需对IPA安装包进行解压(例如通过unzip命令进行解压),进而对解压之后的文件进行筛选识别,以获得二进制文件。例如,在IOS系统中,二进制文件通常为Mach-O格式,从而可通过格式信息来进行二进制文件的提取。
进一步地,在从应用程序安装包中提取二进制文件之后,本申请并非是对应用程序代码段中的代码进行代码混淆处理,而是针对于应用程序数据段中的常量数据进行加密处理。在实际的应用程序运行过程中,针对常量数据的攻击行为也会威胁整个应用程序,从而本申请通过对常量数据的加密保护,可在很大程度上保障应用程序的安全,提升对应用程序的逆向难度。
步骤S120,获取常量数据对应的常量数据存储参数。
进一步地,为提升应用程序的加固效果及加固的实施效率,本申请中主要是针对于常量数据的常量数据存储参数进行加密保护,而非对常量数据本身进行修改,从而进一步精简加固流程,保障应用程序的加固效果。
其中,本实施例中的常量数据存储参数具体为与常量数据存储相关的参数,例如常量数据的存储位置和/或数据长度等等。
步骤S130,采用预设加密方法,对常量数据对应的常量数据存储参数进行加密处理。
在确定常量数据对应的常量数据存储参数之后,可采用相应的加密方法,对常量数据对应的常量数据存储参数进行加密处理。例如,可通过对称加密算法或位置偏移算法等进行加密处理,本实施例对具体的加密算法不做限定。
可选的,本实施例可以对二进制文件数据段中的所有常量数据对应的常量数据存储参数进行加密处理,以提升应用程序的逆向难度;或者,针对二进制文件数据段中的部分常量数据对应的常量数据参数进行加密处理,从而在保证应用程序加固效果的同时,提升加固效率。
由此可见,本实施例中从应用程序安装包中提取二进制文件,并确定二进制文件数据段中的常量数据;获取常量数据对应的常量数据存储参数;采用预设加密方法,对常量数据对应的常量数据存储参数进行加密处理。本实施例通过对二进制文件数据段中常量数据的加密处理,实现对应用程序的加固,从而大幅提升应用程序的逆向难度,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。
图2示出了根据本发明另一个实施例提供的一种基于应用程序安装包的程序加固方法的流程示意图。如图2所示,该方法包括:
步骤S210,从应用程序安装包中提取二进制文件,并确定二进制文件数据段中的常量数据。
本实施例所提供的程序加固方法,可以基于已经生成的应用程序安装包,进行应用程序的加固,从而可以避免现有技术中因通过开发者终端中的编译器进行程序加固而带来的无法批量维护及维护成本高的弊端。
在具体的实施过程中,可以在对应用程序安装包解压后,提取二进制文件。并进一步地通过数据段标识(例如“__DATA”)来,来定位二进制文件中数据段的位置。在IOS系统中,二进制文件一般包含有,文件头区、加载命令区及段数据区域。而段数据区域又可以包含有数据段、代码段和/或链接段等等。本实施例并非对代码段中代码进行混淆处理,而是针对数据段中的常量数据进行加密保护,从而可降低代码膨胀量。
在确定二进制文件中数据段之后,可以获取数据段所对应常量表,并根据常量表中数据确定所需要加密保护的常量数据。
步骤S220,获取常量数据对应的索引位置指针和/或常量数据长度标志。
具体地,可获取常量表中的数据所对应的常量数据存储参数。其中,常量数据存储参数具体为索引位置指针和/或常量数据长度标志。索引位置指针用于指向常量数据的存储位置,而常量数据长度标志用于标识常量数据的长度。从而,本申请并不对常量数据本身进行修改等处理,而是对常量数据的存储参数进行加密保护,从而有利于减少代码膨胀,并利于加固效率的提升。
步骤S230,对常量数据对应的索引位置指针进行偏移处理;和/或,更改常量数据对应的常量数据长度标志的内容。
在获得常量数据存储参数(索引位置指针和/或常量数据长度标志)之后,可采用相应的加密方法对常量数据存储参数进行加密处理。在具体的加密过程中,可针对于不同的常量数据存储参数,采用相应的加密方法:
针对于索引位置指针,可对常量数据对应的索引位置指针进行偏移处理。其中,本实施例对常量数据对应的索引位置指针进行偏移处理的具体方式不做限定,例如,可随机选取索引位置指针所指向的地址中的某一位或多位进行相应的运算等等。如,原指针所指向的地址为0x1000,进行偏移处理后指针所指向的地址为0x1100。
针对于常量数据长度标志,可对常量数据对应的常量数据长度标志的内容进行更改。例如,若常量数据对应的常量数据长度标志中的内容为10,则更改后该常量数据对应的常量数据长度标志中的内容为0。
为保障程序的正常运行,在对常量数据对应的常量数据存储参数进行加密处理之后,常量数据当前对应的索引位置指针指向的存储位置为可读属性;和/或,常量数据当前对应的索引位置指针指向的存储位置能够修改为可读属性;和/或,常量数据当前对应的索引位置指针偏移常量数据当前对应的常量数据长度之后所指向的存储位置,为可读属性;和/或,常量数据当前对应的索引位置指针偏移常量数据当前对应的常量数据长度之后所指向的存储位置,能够修改为可读属性。
可选的,本实施例可以对二进制文件数据段中的所有常量数据对应的常量数据存储参数进行加密处理,以提升应用程序的逆向难度;或者,针对二进制文件数据段中的部分常量数据对应的常量数据参数进行加密处理,从而在保证应用程序加固效果的同时,提升加固效率。
在一种可选的实施方式中,在采用加密方法对常量数据存储参数进行加密处理时,可采用对称加密算法,对常量数据对应的索引位置指针和/或常量数据长度标志进行加密处理。其中,本实施例对具体的对称加密算法不做限定。
步骤S240,获取并存储解密秘钥。
具体地,在采用预设加密方法,对常量数据对应的常量数据存储参数进行加密处理之后,获取并存储与预设加密方法对应的解密秘钥。
当预设加密算法为对常量数据对应的索引位置指针进行偏移处理;和/或,更改常量数据对应的常量数据长度标志的内容时,解密秘钥具体为进行偏移处理过程中的偏移量,和/或常量数据长度标志的内容变更前后的对应关系等等。
当采用对称加密算法,对常量数据对应的索引位置指针和/或常量数据长度标志进行加密处理时,解密秘钥具体为与该对称加密算法相匹配的解密秘钥。
其中,在存储解密秘钥过程中,可采用以下存储方式中的一种或多种的结合:
在一种实施方式中,可将解密秘钥存储于二进制文件中的无意义字段,并保证存储位置在程序运行时为可读属性,或者可以修改为可读属性。其中,该无意义字段可以为二进制文件中的某空白或者无用字段,如文件头末尾与代码段开始位置之间的空白区域等。从而提升解密秘钥的隐秘性,并避免占用多余存储内存。
在另一种实施方式中,可创建预设的解密秘钥存储段表,将解密秘钥存储于解密秘钥存储段表中。例如,可创建名为“__DATA,__keychain”的段表”,并将解密秘钥存储于该新建的段表中,从而便于解密秘钥的集中管理。
在又一种实施方式中,可将解密秘钥以预设文件形式存储于应用程序安装包中。例如,可以以文本、图片等形式存储于IPA安装包中,从而使得解密秘钥与二进制文件分离,进一步提升应用程序的逆向难度。
在再一种实施方式中,可根据解密秘钥的相关信息,如解密秘钥的类型、所占用的空间大小等,动态地确定解密秘钥的存储方式。
在完成应用程序的加固后,为保障程序的正常运行,可在程序运行时,执行解密程序,以获取解密秘钥,利用解密秘钥对加密处理后的常量数据对应的常量数据存储参数进行解密处理。
可选的,为进一步提升加固效果,可将解密程序编译为动态链接库,并在二进制文件中添加动态链接库的加载命令,并使动态链接库的加载命令位于链接命令的首位,以保证该命令能够最先执行。
可选的,还可以修改二进制文件中的代码段,以插入解密程序,并使二进制文件中预设程序入口指向解密程序,并适应性修改因代码段变化而导致的其他段表的变化。
由此可见,本实施例所提供的程序加固方法,可以基于已经生成的应用程序安装包,进行应用程序的加固,从而可以避免现有技术中因通过开发者终端中的编译器进行程序加固而带来的无法批量维护及维护成本高的弊端;并且,在加固过程中,对常量数据对应的索引位置指针和/或常量数据长度标志进行加密处理,从而有利于减少代码膨胀,并利于加固效率的提升,并具有较优的加固效果;此外,本方案实施过程简单灵活,易于批量维护,维护成本低,易于大规模应用与实施。
图3示出了根据本发明一个实施例提供的一种基于应用程序安装包的程序加固装置的结构示意图。如图3所示,该装置包括:确定模块31、获取模块32、及加密模块33。
确定模块31,适于从所述应用程序安装包中提取二进制文件,并确定所述二进制文件数据段中的常量数据;
获取模块32,适于获取所述常量数据对应的常量数据存储参数;
加密模块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执行以下操作:
修改所述二进制文件中的代码段,以插入所述解密程序,并使所述二进制文件中预设程序入口指向所述解密程序。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中基于应用程序安装包的程序加固装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (14)

1.一种基于应用程序安装包的程序加固方法,其特征在于,包括:
从所述应用程序安装包中提取二进制文件,并确定所述二进制文件数据段中的常量数据;
获取所述常量数据对应的常量数据长度标志;
更改所述常量数据对应的常量数据长度标志的内容,以对所述常量数据对应的常量数据长度进行加密处理;其中,所述常量数据当前对应的索引位置指针偏移所述常量数据当前对应的常量数据长度之后所指向的存储位置,为可读属性和/或能够修改为可读属性;
获取并存储与所述加密处理对应的解密秘钥;所述解密秘钥为常量数据长度标志的内容变更前后的对应关系;其中,根据解密秘钥的相关信息动态地确定解密秘钥的存储方式;所述相关信息包括解密秘钥的类型以及所占用的空间大小;所述存储方式包括:将所述解密秘钥存储于所述二进制文件中的无意义字段,以及,将所述解密秘钥以预设文件形式存储于所述应用程序安装包中以使得解密秘钥与二进制文件分离。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采用对称加密算法,对所述常量数据对应的索引位置指针及常量数据长度标志进行加密处理。
3.根据权利要求1所述的方法,其特征在于,所述存储方式还包括:
创建预设的解密秘钥存储段表,将所述解密秘钥存储于所述解密秘钥存储段表中。
4.根据权利要求3所述的方法,其中,所述方法还包括:
在程序运行时,执行解密程序,以获取所述解密秘钥,利用所述解密秘钥对加密处理后的所述常量数据对应的常量数据存储参数进行解密处理。
5.根据权利要求4所述的方法,其中,所述方法还包括:
将所述解密程序编译为动态链接库,并在所述二进制文件中添加所述动态链接库的加载命令,并使所述动态链接库的加载命令位于所有链接命令的首位。
6.根据权利要求4所述的方法,其中,所述方法还包括:
修改所述二进制文件中的代码段,以插入所述解密程序,并使所述二进制文件中预设程序入口指向所述解密程序。
7.一种基于应用程序安装包的程序加固装置,其特征在于,包括:
确定模块,适于从所述应用程序安装包中提取二进制文件,并确定所述二进制文件数据段中的常量数据;
获取模块,适于获取所述常量数据对应的常量数据长度标志;
加密模块,适于更改所述常量数据对应的常量数据长度标志的内容,以对所述常量数据对应的常量数据长度进行加密处理;其中,所述常量数据当前对应的索引位置指针偏移所述常量数据当前对应的常量数据长度之后所指向的存储位置,为可读属性和/或能够修改为可读属性;
密钥存储模块,适于获取并存储与所述加密处理对应的解密秘钥;所述解密秘钥为常量数据长度标志的内容变更前后的对应关系;其中,根据解密秘钥的相关信息动态地确定解密秘钥的存储方式;所述相关信息包括解密秘钥的类型以及所占用的空间大小;所述存储方式包括:将所述解密秘钥存储于所述二进制文件中的无意义字段,以及,将所述解密秘钥以预设文件形式存储于所述应用程序安装包中以使得解密秘钥与二进制文件分离。
8.根据权利要求7所述的装置,其中,所述加密模块进一步适于:
采用对称加密算法,对所述常量数据对应的索引位置指针以及常量数据长度标志进行加密处理。
9.根据权利要求8所述的装置,其中,所述存储方式还包括:创建预设的解密秘钥存储段表,将所述解密秘钥存储于所述解密秘钥存储段表中。
10.根据权利要求9所述的装置,其中,所述装置还包括:
解密模块,适于在程序运行时,执行解密程序,以获取所述解密秘钥,利用所述解密秘钥对加密处理后的所述常量数据对应的常量数据存储参数进行解密处理。
11.根据权利要求10所述的装置,其中,所述装置还包括:
命令插入模块,适于将所述解密程序编译为动态链接库,并在所述二进制文件中添加所述动态链接库的加载命令,并使所述动态链接库的加载命令位于所有链接命令的首位。
12.根据权利要求10所述的装置,其中,所述装置还包括:
程序插入模块,适于修改所述二进制文件中的代码段,以插入所述解密程序,并使所述二进制文件中预设程序入口指向所述解密程序。
13.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6中任一项所述的基于应用程序安装包的程序加固方法对应的操作。
14.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-6中任一项所述的基于应用程序安装包的程序加固方法对应的操作。
CN201910245564.4A 2019-03-28 2019-03-28 基于应用程序安装包的程序加固方法及装置 Expired - Fee Related CN110110506B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910245564.4A CN110110506B (zh) 2019-03-28 2019-03-28 基于应用程序安装包的程序加固方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910245564.4A CN110110506B (zh) 2019-03-28 2019-03-28 基于应用程序安装包的程序加固方法及装置

Publications (2)

Publication Number Publication Date
CN110110506A CN110110506A (zh) 2019-08-09
CN110110506B true CN110110506B (zh) 2021-07-02

Family

ID=67484805

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910245564.4A Expired - Fee Related CN110110506B (zh) 2019-03-28 2019-03-28 基于应用程序安装包的程序加固方法及装置

Country Status (1)

Country Link
CN (1) CN110110506B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111695093B (zh) * 2020-05-29 2024-10-25 平安科技(深圳)有限公司 基于iOS应用的加固方法、电子装置及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US8280466B2 (en) * 2004-03-17 2012-10-02 Telecommunication Systems, Inc. Four frequency band single GSM antenna
CN106960156B (zh) * 2016-01-08 2020-03-13 广州市动景计算机科技有限公司 基于应用程序的数据加密及访问方法、装置
CN109284603B (zh) * 2017-07-20 2022-07-01 腾讯科技(深圳)有限公司 一种配置数据处理方法、装置及存储介质
CN107908933B (zh) * 2017-11-08 2020-08-28 北京顶象技术有限公司 一种基于中间语言的字符串加密方法
CN109062582B (zh) * 2018-07-23 2022-02-01 北京云测信息技术有限公司 一种应用安装包的加密方法及装置

Also Published As

Publication number Publication date
CN110110506A (zh) 2019-08-09

Similar Documents

Publication Publication Date Title
CN110119601B (zh) 基于应用程序安装包的程序加固方法及装置
CN107563201B (zh) 基于机器学习的关联样本查找方法、装置及服务器
CN108399319B (zh) 源代码保护方法、应用服务器及计算机可读存储介质
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN109983464B (zh) 检测恶意脚本
CN106960156B (zh) 基于应用程序的数据加密及访问方法、装置
CN110147653B (zh) 应用程序安全加固方法及装置
CN105074712A (zh) 代码处理装置和程序
CN106055375A (zh) 应用程序安装方法及装置
CN103593406A (zh) 一种静态资源标识处理方法及装置
CN116522368A (zh) 一种物联网设备固件解密解析方法、电子设备、介质
CN110110506B (zh) 基于应用程序安装包的程序加固方法及装置
CN108733990B (zh) 一种基于区块链的文件保护方法及终端设备
CN107506623B (zh) 应用程序的加固方法及装置、计算设备、计算机存储介质
CN110119600A (zh) 基于应用程序安装包的程序加固方法及装置
US10922682B2 (en) Java card application memory footprint optimization
CN107480479B (zh) 应用程序的加固方法及装置、计算设备、计算机存储介质
CN112068904A (zh) 一种芯片boot运行方法、装置及相关组件
CN106295327B (zh) 可执行文件的加固方法和装置
CN108021790B (zh) 文件保护方法、装置、计算设备及计算机存储介质
CN110135152B (zh) 应用程序攻击检测方法及装置
CN114491589A (zh) 芯片加密方法和装置、芯片校验方法和装置
CN108875403B (zh) 一种文件管理方法及装置
CN111986065A (zh) 一种数字水印嵌入方法及装置
JP2009524879A (ja) プロテクトされたアプリケーションプログラムとシェルコードとの結合

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
TA01 Transfer of patent application right

Effective date of registration: 20210525

Address after: 4f, building C2, Suzhou 2.5 Industrial Park, 88 Dongchang Road, Suzhou Industrial Park, Jiangsu Province, 215000

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

Applicant after: JIANGSU PAY EGIS 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.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210702