CN109558734B - 一种堆栈安全性的检测方法及装置、移动设备 - Google Patents
一种堆栈安全性的检测方法及装置、移动设备 Download PDFInfo
- Publication number
- CN109558734B CN109558734B CN201811434893.5A CN201811434893A CN109558734B CN 109558734 B CN109558734 B CN 109558734B CN 201811434893 A CN201811434893 A CN 201811434893A CN 109558734 B CN109558734 B CN 109558734B
- Authority
- CN
- China
- Prior art keywords
- protection
- stack
- preset
- code
- target file
- 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
Images
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Abstract
本发明公开了一种堆栈安全性的检测方法,以解决现有技术中不能对堆栈安全性进行准确检测的问题。方法包括:从待测应用安装包中获取用于保存编译信息的目标文件;从反编译后的目标文件中获取编译时插入的保护代码;判断所述保护代码中是否存在与预设第一关键字匹配的字符;其中,所述预设第一关键字表征启用全局编译保护方式;根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况。本发明还公开一种堆栈安全性的检测装置、移动终端及计算机可读存储介质。
Description
技术领域
本发明涉及安全技术领域,尤其涉及一种堆栈安全性的检测方法、装置、移动终端及计算机可读存储介质。
背景技术
现有技术中,堆栈溢出是应用安装包中一种比较常见的安全漏洞,例如,当堆栈溢出时,攻击者会在堆栈区存放堆栈元素的数组中写入超过数组长度的数据,使堆栈中调用函数的返回地址被超过数组长度的数据覆盖,导致调用函数返回时跳转至攻击者注入的恶意代码或shellcode(用来获取应用程序权限的代码或者填充数据)处执行,进而使得应用程序安装包遭到破坏。
为了保证应用安装包的安全性,通常会采用保护代码对编译函数进行编译器堆栈保护,即对于需要保护的编译函数,插入适当的保护代码并通过校验该保护代码以实现堆栈保护。
然而,现有技术中即使对编译函数进行了编译器堆栈保护,也并不意味着经过编译器堆栈保护后的堆栈的绝对安全,究其原因之一,可能是在编译堆栈保护过程中保护代码仅对某一类特定函数插入了保护代码并设置校验代码,默认其余函数安全(即对于其余函数不插入保护代码且不设置校验代码),导致只有在特定函数遭到攻击时编译保护才能进行准确检测;若其余函数遭到攻击时,则编译保护不能准确检测到攻击。
因而,目前亟需一种可以对堆栈安全性进行准确检测的方案。
发明内容
为解决上述技术问题,本发明提供一种堆栈安全性的检测方法,能够准确检测堆栈的安全性。
本发明实施例还提供一种堆栈安全性的检测装置,一种移动终端,以及一种计算机可读存储介质。
本发明实施例采用下述技术方案:
一种堆栈安全性的检测方法,包括:
从待测应用安装包中获取用于保存编译信息的目标文件;
从反编译后的目标文件中获取编译时插入的保护代码;
判断所述保护代码中是否存在与预设第一关键字匹配的字符;
其中,所述预设第一关键字表征启用全局编译保护方式;
根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况。
一种堆栈安全性的检测装置,包括目标文件获取模块、保护代码获取模块、判断模块和确定模块,其中:
目标文件获取模块,用于从待测应用安装包中获取用于保存编译信息的目标文件;
保护代码获取模块,用于从反编译后的目标文件中获取编译时插入的保护代码;
判断模块,用于判断所述保护代码中是否存在与预设第一关键字匹配的字符;
其中,所述预设第一关键字表征启用全局编译保护方式;
确定模块,用于根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况。
一种移动终端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的堆栈安全性的检测方法的步骤。
一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的堆栈安全性的检测方法的步骤。
本发明实施例采用的上述至少一个技术方案能够达到以下有益效果:
在本发明实施例中,从待测应用安装包中获取用于保存编译信息的目标文件;从反编译后的目标文件中获取编译时插入的保护代码;判断所述保护代码中是否存在与预设第一关键字匹配的字符;其中,所述预设第一关键字表征启用全局编译保护方式。根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况。采用本发明所提供的堆栈安全性的检测方法,由于预设第一关键字表征启用全局编译保护方式,即对编译过程中的所有编译函数均插入保护代码,并设置校验代码,可以避免相关技术中,保护代码没有对除特定函数外的其余函数进行保护,导致当其余函数遭遇攻击时,依靠保护代码无法检测到攻击,而导致检测结果不准确的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例提供的一种堆栈安全性的检测方法的实现流程示意图;
图2为本发明实施例提供的一种堆栈安全性的检测装置的具体结构示意图;
图3为本发明实施例提供的一种移动终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图,详细说明本发明各实施例提供的技术方案。
实施例1
为解决现有技术中由于在编译堆栈保护过程中保护代码仅对某一类特定函数插入了保护代码并校验该保护代码,默认其余函数安全(即对于其余函数不插入保护代码),导致只有在特定函数遭到攻击时,才能准确检测到攻击;若其余函数遭到攻击时,使用该方法则不能准确检测到攻击的问题,本发明实施例提供一种堆栈安全性的检测方法。
该方法的执行主体,可以是用于检测应用安装包的服务器或服务器上所运行的检测系统(或检测程序);又或者,该堆栈安全性的检测方法的执行主体可以是用于检测应用安装包的客户端(或用户端)等。
为便于描述本申请实施例1,以下详细说明均以该堆栈安全性的检测方法的执行主体为检测堆栈安全性的服务器或服务器上所运行的检测系统(以下简称为检测系统)为例,对该应用安装包的堆栈安全性的检测方法进行介绍。本领域技术人员可以理解,本发明实施例以该具备堆栈安全性检测功能的服务器为例对方法进行介绍,仅是一种示例性说明,并不对本方案对应的权利要求保护范围构成限制。
具体地,本发明实施例提供的该方法的实现流程如图1所示,包括如下步骤:
步骤11,从待测应用安装包中获取用于保存编译信息的目标文件;
本发明实施例1中,所述待测应用安装包,是指待检测的Android(安卓)操作系统上应用程序(Application,简称APP)的安装包,比如可以是已载入应用市场或者即将载入应用市场的需要检测的Android操作系统上各应用程序的安装包。在一种实施方式中,所述安装包是指Android安装包,即APK文件(Android Package)。该APK文件中包含了一个Android应用程序的所有内容。
其中,在一种实施方式中,所述APK文件可以理解为Android应用程序的程序文件所压缩成的一个压缩包,但是该APK文件是以.apk作为文件的后缀名。比如可以是:xxx.apk,其中,所述xxx是Android应用程序的开发者所命名的文件名。
本发明实施例1中,从待测应用安装包中获取用于保存编译信息的目标文件具体包括:
子步骤111,对待测应用程序安装包进行解压以获取应用程序的源文件;
需要说明的是,待测应用程序安装包经过解压后所包含的文件及文件夹如下述所示,主要包括:
清单文件(AndroidManifest.xml)、可执行文件(classes.dex)、资源文件(resources.arsc),以及资源文件夹(assets)、静态数据链接库文件夹(lib)、META-INF文件夹、res文件夹。
其中,AndroidManifest.xml文件是每个APK文件中都必须包含的一类文件,该文件用于描述应用程序的名字、版本、权限、引用的库文件等信息,可以用于查找组件;classes.dex文件是java源码编译后所生成的java字节码文件,是虚拟机Davilk所执行的文件;resources.arsc文件是编译后的二进制资源文件;
assets文件夹用于存放一些原始的配置文件;lib文件夹用于存放所有的so库文件,这些so库文件供其它程序进行调用;META-INF文件夹下存放的是签名、信息描述等,该文件夹是APK文件进行签名的时候签名证书所存放的位置;res文件夹下存放的是图标、图片、JavaScript文件等多种类型的工程资源文件。
另外,由于各应用程序的开发者不同,所以对应用安装包进行解压后,除了上述特定文件外,还可以包括images文件夹、org文件夹等。
其中,对待测应用安装包进行解压所用的工具,比如可以是WinRAR解压软件、WinZip解压软件、7-Zip解压软件等解压缩工具。
需要说明的是,由于应用程序经过编译之后生成的java字节码文件全部保存在classes.dex文件中,因此,本发明实施例中所述的,对待测应用程序安装包进行解压后获取应用程序的源文件中的源文件主要是指classes.dex文件。
子步骤112,根据特征信息,从classes.dex文件中获取用于保存编译信息的目标文件。
其中,所述特征信息为表征经过编译的标识符,比如所述特征信息可以是文件后缀名,例如,java应用程序经过编译后通常会生成后缀名为.obj或者.exe的文件,因此,可以将文件后缀名作为获取目标文件的依据。
本发明实施例中,从classes.dex文件中获取用于保存编译信息的目标文件时,也可以依据文件后缀名进行获取,需要说明的是,本发明实施例中获取的用于保存编译信息的目标文件主要是指后缀名为.exe的可执行文件。
步骤12,从反编译后的目标文件中获取编译时插入的保护代码;
由于用于保存编译信息的目标文件中的相关文件信息无法被直接读取,因此,需要通过反编译工具将目标文件反编译成smali文件,才能直接读取目标文件中的相关文件信息。其中,所述反编译工具,比如可以是baksmali工具等。
基于上述说明,考虑到目标文件中的相关文件信息无法被直接读取,则,本发明实施例1中,在一种实施方式中,从反编译后的目标文件中获取编译时插入的保护代码,具体包括:
子步骤121,使用反编译工具对目标文件进行反编译;
其中,目标文件存储的是java源程序经过编译后生成的字节码文件。对于目标文件的反编译,一般可以采用APKTool和AXMLPrinter2.jar工具,或者采dex2jar工具。
本发明实施例以dex2jar反编译方式为例,其中,对目标文件进行反编译的过程比如可以分为以下两步:第一步,从待测应用安装包中恢复出dex文件;应用安装包本质上是一个zip格式的压缩包,可以通过修改文件的后缀名并解压的方式,恢复出保存有编译信息的目标文件。第二步,从目标文件反编译出.class文件,然后可以使用dex2jar.ba在windows命令行下,输入dex2jar+需要反编译的目标文件名即可完成反编译。
需要说明的是,若对目标文件进行反编译失败,则表示所述待测应用安装包经过加固,则确定所述待测应用安装包安全,停止应用安装包加固检测。
具体地,由于反编译器有许多预先定义的规则,正常的应用安装包可以被这些规则解析。然而,一旦应用安装包被加固,就会破坏这些规则,导致apktool抛出异常,即对目标文件反编译失败。所以,若对目标文件进行反编译失败,则表示待测应用安装包经过加固。另外,由于在加固过程中通常会对应用安装包中的关键信息进行了保护处理,通过这种保护处理可以有效避免应用安装包被逆向分析、嵌入各类病毒等问题,因此,优选地,可以确定所述待测应用安装包安全,停止应用安装包加固检测。
子步骤122,获取反编译后的目标文件中的保护代码。
其中,保护代码是指在堆栈保护过程中对于需要保护的编译函数插入的适当的处理代码,所述处理代码可以为编译过程编译函数设置校验代码,若堆栈溢出时,在返回地址被覆盖之前校验代码会首先被覆盖。因此,通过检查校验代码是否被修改,就可以判断是否发生了溢出攻击。
步骤13,判断所述保护代码中是否存在与预设第一关键字匹配的字符;
其中,所述预设第一关键字表征启用全局编译保护方式;所谓启用全局编译保护方式,即对编译过程中的所有函数都插入保护代码并设置校验代码。通常情况下,对编译过程中的所有函数都插入保护代码,若编译函数在编译过程中遭到攻击,则会在函数返回地址被覆盖前先覆盖保护代码设置的校验代码,因此,可以通过检测校验代码是否改变进而确定编译函数在编译过程中是否遭到堆栈攻击。
在一种实施方式中,上述判断过程的具体实施步骤,比如可以是:将“预设第一关键字”设定为“-fstack-protector-all”,其中,“-fstack-protector-all”字符串表征启动“全局编译保护方式”,即对所有编译过程中的编译函数进行保护。然后执行grep命令,查找目标文件的保护代码中是否存在与预设第一关键字匹配的字符。
需要说明的是,判断所述保护代码中是否存在与预设第一关键字匹配的字符,目的在于确定所述待测应用安装包中的保护代码是否能够准确检测出堆栈溢出风险。由于相关技术中,在编译堆栈保护过程中,插入的保护代码可能仅针对某一类特定函数进行保护,例如,“fstack-protector”保护代码,这种保护代码仅针对字符串型的操作函数进行保护,即只对字符串型的操作函数插入保护代码,默认其余函数安全(即对于其余函数不插入保护代码),采用这种保护代码,导致只有在特定函数(字符串型函数)遭遇攻击时,才能依靠保护代码准确检测出函数遭遇攻击;若其余函数遭遇攻击时,依靠插入的保护代码便不能准确检测出函数是否遭遇攻击,然而,本发明中采用的是全局编译保护代码,即对编译过程中的所有函数均插入保护代码,并且对所有函数都设置校验代码,通过这种方式,可以避免上述过程中出现的只有在特定情况下才能准确检测函数是否遭遇攻击的问题。
步骤14,根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况。
在本发明实施例中,根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况具体包括:
若所述保护代码与预设第一关键字匹配,则确定所述堆栈安全;若所述处理代码与预设第一关键字不匹配,则确定所述堆栈不安全。
基于步骤13中的说明,由于本发明实施例中的预设第一关键字表征启用全局编译保护方式,因此,若保护代码与预设第一关键字匹配,则说明处理代码与预设第一关键字一致,即编译过程中插入的代码是启用全局编译保护方式的代码,即对编译过程中的所有编译函数均插入保护代码且对所有编译函数设置校验代码,结合步骤12中的说明,通过本发明实施例中的保护代码,任何编译函数遭遇攻击时,都可以准确检测出,故,当所述处理代码与预设第一关键字匹配,可以确定所述堆栈安全。以此类推,对于处理代码与预设第一关键字不匹配的情况此处不再赘述。
采用本发明实施例提供的该方法,由于预设第一关键字表征启用全局编译保护方式,即对编译过程中的所有编译函数均插入保护代码,并设置检验代码,因此,编译过程中无论任何编译函数遭遇攻击使用全局编译保护方式均能准确检验,基于这种特点,将预设第一关键字作为一个标准,本发明通过判断编译时插入的保护代码与预设第一关键字这个标准的匹配结果程度即可确定出堆栈的安全情况。
实施例2
为解决现有技术存在的不能对堆栈安全性进行准确检测的问题,本发明实施例提供一种堆栈安全性的检测装置20,该装置的具体结构示意图如图2所示,包括目标文件获取模块21、保护代码获取模块22、判断模块23和确定模块24,各模块的功能如下:
目标文件获取模块21,用于从待测应用安装包中获取用于保存编译信息的目标文件;
优选地,本发明实施中,目标文件获取模块可以包括:
源文件获取单元,用于对待测应用程序安装包进行解压以获取应用程序的源文件;
目标文件获取单元,用于根据特征信息,从源文件中获取用于保存编译信息的目标文件。
保护代码获取模块22,用于从反编译后的目标文件中获取编译时插入的保护代码;
优选地,本发明实施例中的保护代码获取模块具体可以包括:
反编译单元,用于使用反编译工具对目标文件进行反编译;
保护代码获取单元,用于获取反编译后的目标文件中的保护代码。
判断模块23,用于判断所述保护代码中是否存在与预设第一关键字匹配的字符;
其中,所述预设第一关键字表征启用全局编译保护方式;
确定模块24,用于根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况。
优选地,确定模块24具体包括:
若所述保护代码与预设第一关键字匹配,则确定所述堆栈安全;用于若所述保护代码与预设第一关键字不匹配,则确定所述堆栈不安全。
采用本发明实施例提供的该装置,由于预设第一关键字表征启用全局编译保护方式,即对编译过程中的所有编译函数均插入保护代码,并设置检验代码,因此,编译过程中无论任何编译函数遭遇攻击使用全局编译保护方式均能准确检验,基于这种特点,将预设第一关键字作为一个标准,本发明通过判断模块判断出编译时插入的保护代码与预设第一关键字这个标准的匹配结果,确定模块根据判断模块的判断结果即可确定出堆栈的安全情况。
实施例3
优选的,本发明实施例还提供一种移动设备300,包括如图3所示的处理器310,存储器309,存储在存储器309上并可在所述处理器310上运行的计算机程序,该计算机程序被处理器310执行时,实现上述实施例中所述的堆栈安全的检测方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
图3为实现本发明各个实施例的一种智能设备的硬件结构示意图,该智能设备300包括但不限于:射频单元301、网络模块302、音频输出单元303、输入单元304、传感器305、显示单元306、用户输入单元307、接口单元308、存储器309、处理器310、以及电源311等部件。本领域技术人员可以理解,图3中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,移动终端包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
其中,处理器310,耦合到所述存储器,用于从待测应用安装包中获取用于保存编译信息的目标文件;从反编译后的目标文件中获取编译时插入的保护代码;判断所述保护代码中是否存在与预设第一关键字匹配的字符;其中,所述预设第一关键字表征启用全局编译保护方式;根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况。
存储器309,用于存储可在处理器310上运行的计算机程序,该计算机程序被处理器310执行时,实现处理器310所实现的上述功能。
应理解的是,本发明实施例中,射频单元301可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器310处理;另外,将上行的数据发送给基站。通常,射频单元301包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元301还可以通过无线通信系统与网络和其他设备通信。
移动终端通过网络模块302为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元303可以将射频单元301或网络模块302接收的或者在存储器309中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元303还可以提供与移动终端300执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元303包括扬声器、蜂鸣器以及受话器等。
输入单元304用于接收音频或视频信号。输入单元304可以包括图形处理器(Graphics Processing Unit,GPU)3041和麦克风3042,图形处理器3041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元306上。经图形处理器3041处理后的图像帧可以存储在存储器309(或其它存储介质)中或者经由射频单元301或网络模块302进行发送。麦克3042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元301发送到移动通信基站的格式输出。
移动终端300还包括至少一种传感器305,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板3061的亮度,接近传感器可在移动终端300移动到耳边时,关闭显示面板3061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器305还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元306用于显示由用户输入的信息或提供给用户的信息。显示单元306可包括显示面板3061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板3061。
用户输入单元307可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元307包括触控面板3071以及其他输入设备3072。触控面板3071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板3071上或在触控面板3071附近的操作)。触控面板3071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器310,接收处理器310发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板3071。除了触控面板3071,用户输入单元307还可以包括其他输入设备3072。具体地,其他输入设备3072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板3071可覆盖在显示面板3061上,当触控面板3071检测到在其上或附近的触摸操作后,传送给处理器310以确定触摸事件的类型,随后处理器310根据触摸事件的类型在显示面板3061上提供相应的视觉输出。虽然在图3中,触控面板3071与显示面板3061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板3071与显示面板3061集成而实现移动终端的输入和输出功能,具体此处不做限定。
接口单元308为外部装置与移动终端300连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元308可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端300内的一个或多个元件或者可以用于在移动终端300和外部装置之间传输数据。
存储器309可用于存储软件程序以及各种数据。存储器309可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器309可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器310是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器309内的软件程序和/或模块,以及调用存储在存储器309内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。处理器310可包括一个或多个处理单元;优选的,处理器310可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器310中。
移动终端300还可以包括给各个部件供电的电源311(比如电池),优选的,电源311可以通过电源管理系统与处理器310逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,移动终端300包括一些未示出的功能模块,在此不再赘述。
优选地,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中所述任意一种方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(RandomAccess Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (12)
1.一种堆栈安全性的检测方法,其特征在于,包括:
从待测应用安装包中获取用于保存编译信息的目标文件;
从反编译后的目标文件中获取编译时插入的保护代码;
判断所述保护代码中是否存在与预设第一关键字匹配的字符;
其中,所述预设第一关键字表征启用全局编译保护方式;
根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况;
所述保护代码是指在堆栈保护过程中对于需要保护的编译函数插入的处理代码,所述处理代码为编译过程中的编译函数设置校验代码;所述预设第一关键字为-fstack-protector-all。
2.如权利要求1所述的方法,其特征在于,从待测应用安装包中获取用于保存编译信息的目标文件,具体包括:
对待测应用程序安装包进行解压以获取应用程序的源文件;
根据编译的特征信息,从源文件中获取用于保存编译信息的目标文件。
3.如权利要求1所述的方法,其特征在于,从反编译后的目标文件中获取保护代码,具体包括:
使用反编译工具对目标文件进行反编译;
获取反编译后的目标文件中的保护代码。
4.如权利要求1所述的方法,其特征在于,根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况,具体包括:
若所述保护代码与预设第一关键字匹配,则确定所述堆栈安全;若所述保护代码与预设第一关键字不匹配,则确定所述堆栈不安全。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
若对目标文件进行反编译失败,则表示所述待测应用安装包经过加固,则确定所述待测应用安装包中的堆栈安全。
6.一种堆栈安全性的检测装置,其特征在于,包括:
目标文件获取模块,用于从待测应用安装包中获取用于保存编译信息的目标文件;
保护代码获取模块,用于从反编译后的目标文件中获取编译时插入的保护代码;
判断模块,用于判断所述保护代码中是否存在与预设第一关键字匹配的字符;
其中,所述预设第一关键字表征启用全局编译保护方式;
确定模块,用于根据所述保护代码与预设第一关键字的匹配结果,确定所述堆栈的安全情况;
所述保护代码是指在堆栈保护过程中对于需要保护的编译函数插入的处理代码,所述处理代码为编译过程中的编译函数设置校验代码;所述预设第一关键字为-fstack-protector-all。
7.如权利要求6所述的装置,其特征在于,目标文件获取模块,具体包括:
源文件获取单元,用于对待测应用程序安装包进行解压以获取应用程序的源文件;
目标文件获取单元,用于根据编译的特征信息,从源文件中获取用于保存编译信息的目标文件。
8.如权利要求6所述的装置,其特征在于,保护代码获取模块,具体包括:
反编译单元,用于使用反编译工具对目标文件进行反编译;
保护代码获取单元,用于获取反编译后的目标文件中的保护代码。
9.如权利要求6所述的装置,其特征在于,确定模块,具体包括:
若所述保护代码与预设第一关键字匹配,则确定所述堆栈安全;若所述保护代码与预设第一关键字不匹配,则确定所述堆栈不安全。
10.如权利要求6所述的装置,其特征在于,所述装置还包括:
若对目标文件进行反编译失败,则表示所述待测应用安装包经过加固,则确定所述待测应用安装包中的堆栈安全。
11.一种移动终端,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的堆栈安全性的检测方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的堆栈安全性的检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434893.5A CN109558734B (zh) | 2018-11-28 | 2018-11-28 | 一种堆栈安全性的检测方法及装置、移动设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434893.5A CN109558734B (zh) | 2018-11-28 | 2018-11-28 | 一种堆栈安全性的检测方法及装置、移动设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558734A CN109558734A (zh) | 2019-04-02 |
CN109558734B true CN109558734B (zh) | 2021-10-15 |
Family
ID=65867854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811434893.5A Active CN109558734B (zh) | 2018-11-28 | 2018-11-28 | 一种堆栈安全性的检测方法及装置、移动设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558734B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110929264B (zh) * | 2019-11-21 | 2022-08-30 | 中国工商银行股份有限公司 | 漏洞检测方法、装置、电子设备及可读存储介质 |
CN111045686B (zh) * | 2019-12-16 | 2023-05-30 | 北京智游网安科技有限公司 | 一种提高应用反编译速度的方法、智能终端及存储介质 |
CN111459822B (zh) * | 2020-04-01 | 2023-10-03 | 抖音视界有限公司 | 系统组件数据的提取方法、装置、设备及可读介质 |
CN113591079B (zh) * | 2020-04-30 | 2023-08-15 | 中移互联网有限公司 | 获取异常应用安装包的方法、装置及电子设备 |
CN113703780B (zh) * | 2020-05-22 | 2024-04-19 | 广州虎牙科技有限公司 | 反编译检测、网页资源数据发送方法、装置、设备及介质 |
CN112287335A (zh) * | 2020-10-28 | 2021-01-29 | 北京智游网安科技有限公司 | 基于fortify安全保护的检测方法、终端及存储介质 |
CN112182515A (zh) * | 2020-10-28 | 2021-01-05 | 北京智游网安科技有限公司 | 一种基于nx安全保护的检测方法、终端及存储介质 |
CN112182516A (zh) * | 2020-10-28 | 2021-01-05 | 北京智游网安科技有限公司 | 基于relro安全保护的检测方法、终端及存储介质 |
CN112597487B (zh) * | 2020-12-24 | 2023-03-31 | 厦门海迈科技股份有限公司 | 一种基于.net访问权限管理方法和装置以及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101964036A (zh) * | 2010-10-29 | 2011-02-02 | 北京椒图科技有限公司 | 漏洞检测方法及装置 |
CN104714885A (zh) * | 2015-02-13 | 2015-06-17 | 小米科技有限责任公司 | 栈溢出位置的检测方法及装置 |
US9513911B2 (en) * | 2013-11-22 | 2016-12-06 | Thales | Method of detecting stack overflows and processor for implementing such a method |
CN108573143A (zh) * | 2017-03-10 | 2018-09-25 | 南京大学 | 基于程序插桩和动态信息验证的栈保护方法 |
-
2018
- 2018-11-28 CN CN201811434893.5A patent/CN109558734B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101964036A (zh) * | 2010-10-29 | 2011-02-02 | 北京椒图科技有限公司 | 漏洞检测方法及装置 |
US9513911B2 (en) * | 2013-11-22 | 2016-12-06 | Thales | Method of detecting stack overflows and processor for implementing such a method |
CN104714885A (zh) * | 2015-02-13 | 2015-06-17 | 小米科技有限责任公司 | 栈溢出位置的检测方法及装置 |
CN108573143A (zh) * | 2017-03-10 | 2018-09-25 | 南京大学 | 基于程序插桩和动态信息验证的栈保护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109558734A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558734B (zh) | 一种堆栈安全性的检测方法及装置、移动设备 | |
EP3647981B1 (en) | Security scanning method and apparatus for mini program, and electronic device | |
CN106874037B (zh) | 应用程序安装方法、装置及移动终端 | |
CN107786504B (zh) | Elf文件发布方法、elf文件校验方法、服务器及终端 | |
CN106598584B (zh) | 一种处理资源文件的方法、装置和系统 | |
CN107766747B (zh) | 校验应用程序安装包完整性的方法、移动终端及服务器 | |
CN109800179B (zh) | 获取数据的方法、发送数据的方法、主机和内嵌式存储器 | |
CN109873794B (zh) | 一种拒绝服务攻击的防护方法及服务器 | |
CN110457888B (zh) | 一种验证码输入方法、装置、电子设备及存储介质 | |
CN110457935B (zh) | 一种权限配置方法及终端设备 | |
CN106709282B (zh) | 资源文件解密方法及装置 | |
CN108804915B (zh) | 病毒程序清理方法、存储设备及电子终端 | |
WO2018024138A1 (zh) | 检测恶意网址的方法、装置、终端以及计算机存储介质 | |
CN111142930A (zh) | 安装包文件打包方法、装置、终端设备及存储介质 | |
CN111723002A (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN111598573B (zh) | 一种设备指纹验证方法及装置 | |
CN109271779A (zh) | 一种安装包检测方法、终端设备及服务器 | |
CN108460251B (zh) | 运行应用程序的方法、装置及系统 | |
CN107844318B (zh) | 一种操作系统的升级方法及移动终端和服务器 | |
CN109828770B (zh) | 一种软件升级方法、终端设备及服务器 | |
CN108304697B (zh) | 检测app二次打包的方法、装置及移动终端 | |
CN116679967B (zh) | 一种基本输入输出系统固件升级方法和装置 | |
CN109522719A (zh) | 应用安装包的加固检测方法、装置及移动终端 | |
CN109558707B (zh) | 一种加密函数安全等级的检测方法及装置、移动设备 | |
CN111209031A (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 |