CN110378107A - 一种安装包检测的方法及相关装置 - Google Patents

一种安装包检测的方法及相关装置 Download PDF

Info

Publication number
CN110378107A
CN110378107A CN201910679524.0A CN201910679524A CN110378107A CN 110378107 A CN110378107 A CN 110378107A CN 201910679524 A CN201910679524 A CN 201910679524A CN 110378107 A CN110378107 A CN 110378107A
Authority
CN
China
Prior art keywords
function
pseudocode
source code
installation
target
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
CN201910679524.0A
Other languages
English (en)
Other versions
CN110378107B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910679524.0A priority Critical patent/CN110378107B/zh
Publication of CN110378107A publication Critical patent/CN110378107A/zh
Application granted granted Critical
Publication of CN110378107B publication Critical patent/CN110378107B/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供了一种安装包检测的方法及相关装置,能够减少检测所用的时间,提高检测效率。其中,该方法包括:获取安装包的第一安装文件,第一安装文件包括多个高级精简指令集机器ARM指令,至少一个ARM指令对应一个源代码函数;对第一安装文件进行反汇编,得到第二安装文件,第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个ARM指令;对多个伪代码函数进行检测,得到存在风险的目标伪代码函数;在多个源代码函数中确定与目标伪代码函数对应的目标源代码函数;输出安装包检测结果,安装包检测结果包括目标源代码函数的检测信息。

Description

一种安装包检测的方法及相关装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种安装包检测的方法及相关装置。
背景技术
代码质量对于一个软件而言至关重要,尤其是游戏项目。由于源代码属于机密信息,在对游戏项目的进行代码风险检测时,通常无法直接对源代码进行检测。因此,游戏运营人员一般通过对安装包中的文件进行代码风险检测,进而确定生成该安装包的源代码是否存在风险,以判断游戏项目的风险情况。
现有技术可以在安装包中提取安装文件,该安装文件通常为二进制文件,且该文件包括多个高级精简指令集机器(advanced risc machines,ARM)指令以及每个ARM指令对应的地址,运营人员通过检测各个ARM指令,若发现了存在风险的ARM指令,则通过该部分ARM指令对应的地址确定相应的源代码,进而确定该部分源代码存在风险,以完成对安装包的风险检测。
然而,在安装包检测过程中,由于ARM指令数量多且类型繁杂,导致运营人员在对ARM指令进行风险检测时所耗费的时间过长,检测效率较低。
发明内容
本申请实施例提供了一种安装包检测的方法及相关装置,能够减少检测所用的时间,提高检测效率。
本申请实施例第一方面提供一种安装包检测的方法,包括:
获取安装包的第一安装文件,所述第一安装文件包括多个高级精简指令集机器ARM指令,至少一个ARM指令对应一个源代码函数;
对所述第一安装文件进行反汇编,得到第二安装文件,所述第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个所述ARM指令;
对所述多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
在多个源代码函数中确定与所述目标伪代码函数对应的目标源代码函数;
输出安装包检测结果,所述安装包检测结果包括所述目标源代码函数的检测信息。
本申请实施例第二方面提供一种安装包检测的装置,包括:
第一获取模块,用于获取安装包的第一安装文件,所述第一安装文件包括多个ARM指令,至少一个ARM指令对应一个源代码函数;
反汇编模块,用于对所述第一安装文件进行反汇编,得到第二安装文件,所述第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个所述ARM指令;
检测模块,用于对所述多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
确定模块,用于在多个源代码函数中确定与所述目标伪代码函数对应的目标源代码函数;
输出模块,用于输出安装包检测结果,所述安装包检测结果包括所述目标源代码函数的检测信息。
基于第二方面,本申请实施例中第二方面的第一种实现方式中,所述第一安装文件还包括多个汇编指令地址,一个ARM指令对应一个汇编指令地址,所述至少一个汇编指令地址还对应所述一个源代码函数。
基于第二方面,本申请实施例中第二方面的第二种实现方式中,所述检测模块还用于:
根据所述多个伪代码函数构建双链表,所述双链表的每一个节点为伪代码函数的一个语法元素;
对所述双链表进行检测,得到存在风险的目标伪代码函数。
基于第二方面的第二种实现方式,本申请实施例中第二方面的第三种实现方式中,所述检测模块还用于:
根据所述多个伪代码函数构建双链表,所述双链表的每一个节点为伪代码函数的一个语法元素;
若所述双链表具有风险特征代码,则在所述双链表中,将与所述风险特征代码对应的所述伪代码函数确定为存在风险的目标伪代码函数。
基于第二方面的第一种实现方式,本申请实施例中第二方面的第四种实现方式中,所述装置还包括:
第二获取模块,用于获取所述安装包的第三安装文件;
第三获取模块,用于从所述第三安装文件中获取汇编指令地址与源代码函数之间的对应关系;
所述目标伪代码函数的函数名包括目标汇编指令地址,所述确定模块还用于:
基于所述地址与源代码函数之间的对应关系,在多个源代码函数中确定与所述目标地址对应的目标源代码函数。
基于第二方面,或第二方面的第一种实现方式至第四种实现方式中的任一种,本申请实施例中第二方面的第五种实现方式中,所述装置还包括:
第四获取模块,用于获取所述安装包的第四安装文件;
反编译模块,用于对所述第四安装文件进行反编译,得到所述第一安装文件。
本申请实施例第三方面提供一种终端设备,包括:存储器、收发器、处理器以及总线***;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,包括如下步骤:
获取安装包的第一安装文件,所述第一安装文件包括多个ARM指令,至少一个ARM指令对应一个源代码函数;
对所述第一安装文件进行反汇编,得到第二安装文件,所述第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个所述ARM指令;
对所述多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
在多个源代码函数中确定与所述目标伪代码函数对应的目标源代码函数;
输出安装包检测结果,所述安装包检测结果包括所述目标源代码函数的检测信息;
所述总线***用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
本申请实施例第四方面提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如第二方面或第二方面中任意一种可能实现方式中所述的方法。
本申请实施例第五方面一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如第二方面或第二方面中任意一种可能实现方式中所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种安装包检测的方法,包括:获取安装包的第一安装文件,第一安装文件包括多个高级精简指令集机器ARM指令,至少一个ARM指令对应一个源代码函数,然后对第一安装文件进行反汇编,得到第二安装文件,第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个ARM指令,再对多个伪代码函数进行检测,得到存在风险的目标伪代码函数,并在多个源代码函数中确定与目标伪代码函数对应的目标源代码函数,最后输出安装包检测结果,安装包检测结果包括目标源代码函数的检测信息。本申请实施例通过对第一安装文件进行反汇编从而得到第二安装文件,即将第一安装文件中的ARM指令转换成第二安装文件中的伪代码函数,因为每一个伪代码函数由至少一个ARM指令转换生成,简化了安装文件中的代码结构并减少了代码数量,故在伪代码函数的风险检测过程中,由于伪代码函数的代码结构精简且数量较少,可以快速找出存在风险的目标伪代码函数,进而确定目标源代码函数以完成安装包的检测,能够减少检测所用的时间,提高检测效率。
附图说明
图1为本申请实施例中安装包检测的方法的一个流程示意图;
图2为本申请实施例中第一安装文件的示意图;
图3为本申请实施例中第二安装文件的示意图;
图4为本申请实施例中双链表的示意图;
图5为本申请实施例中安装包检测的装置的一个结构示意图;
图6为本申请实施例提供的终端设备的结构框图。
具体实施方式
本申请实施例提供了一种安装包检测的方法及相关装置,能够减少检测所用的时间,提高检测效率。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请应用于软件项目检测场景,具体地,本申请实施例中的软件项目检测场景通常指对软件项目的代码质量进行风险检测的场景。如一款游戏项目中,代码质量会直接影响游戏的操作、界面显示等等功能,因此,游戏运营人员需要检测游戏项目的代码风险情况。
然而,游戏项目的源代码一般属于机密信息,故运营人员无法直接对源代码进行检测。运营人员可以通过对游戏项目安装包中的文件进行代码风险检测,进而确定生成该安装包的源代码是否存在风险,以判断游戏项目的风险情况。
需要说明的是,本申请实施例中的安装包可以应用于各种***,如安卓***、IOS***等等,以下说明均以安卓***上的安装包作为示例进行介绍。进一步地,该安装包可以为通过脚本后处理技术对游戏项目代码进行处理得到的安装包。
请参阅图1,图1为本申请实施例中安装包检测的方法的一个流程示意图,如图1所示,本申请实施例中安装包检测的方法的一个实施例,该实施例包括:
101、获取安装包的第一安装文件,第一安装文件包括多个ARM指令,至少一个ARM指令对应一个源代码函数;
当需要对游戏项目进行代码风险检测时,可以先获取该游戏项目的安装包,如安卓安装包(androidpackage)。基于该安装包,可以获取安装包的第一安装文件,该第一安装文件包括多个ARM指令,至少一个ARM指令对应一个源代码函数。
需要说明的是,本实施例中的源代码函数为生成安装包的源代码所构成的函数。由于生成一个游戏项目的安装包所需的源代码较为繁多,故源代码函数的数量通常为多个。第一安装文件为二进制文件,其包含多个ARM指令,每一个ARM指令均为二进制语言所编写的指令,因此第一安装文件中的ARM指令数量多且类型复杂。
第一安装文件中的ARM指令与源代码函数之间具有对应关系,具体的,一个源代码函数对应了至少一个ARM指令。
102、对第一安装文件进行反汇编,得到第二安装文件,第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个ARM指令;
得到第一安装文件后,对第一安装文件进行反汇编,得到伪代码文件即第二安装文件。可以理解的是,通过对第一安装文件进行反汇编即将第一安装文件中的二进制语言转换成高级语言,如C语言(the c programming language)等,故第二安装文件中包含了多个由高级语言所编写的伪代码函数,其中,每一个伪代码函数对应至少一个ARM指令,即一个伪代码函数由至少一个ARM指令转化生成。
本实施例中,由于伪代码函数与ARM指令之间存在对应关系,且ARM指令与源代码函数之间存在对应关系,因此,伪代码函数与源代码函数之间也存在对应关系。
通过反汇编的操作,将第一安装文件的众多ARM指令转换成第二安装文件的多个伪代码函数,由于一个伪代码函数可以对应至少一个ARM指令,故对第二安装文件所呈现的代码而言,简化了文件内的代码结构并减少了代码数量。
103、对多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
得到第二安装文件后,则对第二安装文件内的多个伪代码函数分别进行代码风险检测,若确定存在风险的伪代码函数,则将该部分伪代码函数确定为目标伪代码函数。
应理解,本实施例中的目标伪代码函数的数量可以为一个,也可以为多个,此处不做限制。
104、在多个源代码函数中确定与目标伪代码函数对应的目标源代码函数;
基于伪代码函数与源代码函数之间的对应关系,在确定存在风险的目标伪代码函数后,可以在在多个源代码函数中确定与目标伪代码函数对应的目标源代码函数。
105、输出安装包检测结果,安装包检测结果包括目标源代码函数的检测信息。
在确定目标源代码函数后,即相当于确定源代码中出现问题的代码,此时则完成了安装包的检测,可以输出安装包检测结果,其中,安装包检测结果包括目标源代码函数的检测信息,如包括目标源代码的函数名,以及该函数中所存在的风险。
本实施例通过对第一安装文件进行反汇编从而得到第二安装文件,即将第一安装文件中的ARM指令转换成第二安装文件中的伪代码函数,因为每一个伪代码函数由至少一个ARM指令转换生成,简化了安装文件中的代码结构并减少了代码数量,故在伪代码函数的风险检测过程中,由于伪代码函数的代码结构精简且数量较少,可以快速找出存在风险的目标伪代码函数,进而确定目标源代码函数以完成安装包的检测,能够减少检测所用的时间,提高检测效率。
可选的,基于图1所对应的实施例,本申请实施例中安装包检测的方法的一个可选实施例中,获取安装包的第一安装文件之前还包括:
获取安装包的第四安装文件;
对第四安装文件进行反编译,得到第一安装文件。
本实施例中,在获取安装包后,通常会通过交互式反汇编器专业版(interactivedisassembler professional,IDA)对安装包进行解压得到第四安装文件,第四安装文件为安装包的初始文件,其包含的代码一般不可用于风险检测,故可以对第四安装文件进行反编译,得到上述实施例中的第一安装文件。
例如,获取一个安卓安装包后,可以解压该安装包得到libil2cpp.so文件,并对libil2cpp.so文件进行反编译得到二进制文件。可以理解的是,该二进制文件中包含有多个源代码函数所对应的二进制指令行,即用于生成安装包的多个源代码函数中,每一个源代码函数可以映射至该二进制文件中的某一部分二进制指令行中,且每一个二进制指令行可以包括一个汇编指令地址和一个ARM指令。
图2为本申请实施例中第一安装文件的示意图,请参阅图2,以其中一个源代码函数A为例进行说明,源代码函数A映射至二进制文件中的函数名为sub_45044c,且在该函数sub_45044c包括多行二进制指令行(图2中仅示出函数sub_45044c的部分二进制指令行,由于篇幅局限,省略另一部分二进制指令行),每一行均包括一个汇编指令地址和一个ARM指令。
通过图2可知,每一个源代码函数映射至第一安装文件后,均可以对应多个ARM指令,且每个ARM指令对应一个汇编指令地址。
应理解,图2中的函数sub_45044c仅起示例性说明的作用,并不对本申请实施例中二进制文件(即第一安装文件)所包含的内容构成限制。
可选的,基于图1所对应的各个实施例,本申请实施例中安装包检测的方法的一个可选实施例中,该方法还包括:
获取安装包的第三安装文件;
从第三安装文件中获取汇编指令地址与源代码函数之间的对应关系;
目标伪代码函数的函数名包括目标汇编指令地址,在多个源代码函数中确定与目标伪代码函数对应的目标源代码函数包括:
基于地址与源代码函数之间的对应关系,在多个源代码函数中确定与目标地址对应的目标源代码函数。
本实施例中,在得到安装包后,还可以解压该安装包得到第三安装文件,需要说明的是,第三安装文件通常包含有各种对应关系,如汇编指令地址与源代码函数之间的对应关系,汇编指令地址与字符串之间的对应关系等等。
在得到第三安装文件后,可以从第三安装文件中提取汇编指令地址与源代码函数之间的对应关系,通过上述实施例可知,由于一个源代码函数对应至少一个ARM指令,而ARM指令与汇编指令地址一一对应,故一个源代码函数也对应至少一个汇编指令地址。
具体的,在第三安装文件中,汇编指令地址与源代码函数之间的对应关系是以源代码函数的函数名与汇编指令地址相对应的方式呈现。
例如,可从安卓安装包中获取global-metadata.dat文件,global-metadata.dat文件包括源代码函数的函数名与汇编指令地址之间的对应关系,字符串与汇编指令地址之间的对应关系等等。
依旧如图2中的例子,源代码函数A对应多个ARM指令,由于ARM指令与汇编指令地址一一对应,故源代码函数A对应多个汇编指令地址,而在global-metadata.dat文件中,记载的是源代码函数A的函数名,以及该函数名所对应的汇编指令地址,如图2所示,第一行代码即为源代码函数A映射至二进制文件中的函数名sub_45044c(即映射至二进制文件后,源代码函数的函数名由A转换成sub_45044c),以及该函数名sub_45044c所对应的汇编指令地址0045044c。相应的,在global-metadata.dat文件中,则记载了源代码函数A的函数名A对应汇编指令地址0045044c。同理,该文件还记载了其余源代码函数的函数名,及每个函数名所对应的汇编指令地址。
更进一步地,对第一安装文件进行反汇编得到第二安装文件中的多个伪代码函数后,由于每个伪代码函数由至少一个ARM指令转换生成,故每个伪代码函数同样也对应了至少一个汇编指令地址。值得注意的是,伪代码函数的函数名中包含有对应的汇编指令地址。
图3为本申请实施例中第二安装文件的示意图,图3中所示的伪代码函数a由图2中的所有ARM指令转换得到。该伪代码函数a的函数名为sub_45044c,该函数名中的45044c即为伪代码函数a对应的汇编指令地址。
因此,在global-metadata.dat文件中提取源代码函数名与汇编指令地址的关系后,如果伪代码函数a在经过检测后,确定存在风险(即伪代码函数a为目标伪代码函数),则可以获取伪代码函数a的函数名中的的汇编指令地址45044c,然后在上述关系中,找到源代码函数A的函数名A对应的汇编指令地址0045044c,由于伪代码函数a与源代码函数A的函数名所对应的汇编指令地址相同,则伪代码函数a对应源代码函数A,即可以确定源代码函数A存在风险(即源代码函数A为目标源代码函数)。
可选的,基于图1所对应的各个实施例,本申请实施例中安装包检测的方法的一个可选实施例中,对多个伪代码函数进行检测,得到存在风险的目标伪代码函数包括:
根据多个伪代码函数构建双链表,双链表的每一个节点为伪代码函数的一个语法元素;
若双链表具有风险特征代码,则在双链表中,将与风险特征代码对应的伪代码函数确定为存在风险的目标伪代码函数。
本实施例中,在进行反汇编得到多个伪代码函数后,为了提高检测的效率,可以对多个伪代码函数分别进行预处理,该预处理的过程可以为:
伪代码函数由高级语言构成,在高级语言里,通常包括多种语法元素。基础的语言元素包括:函数名、类型、变量名、操作符、常量等等,按照前述语法元素的类别对函数进行拆分,可以得到多个节点,并将多个节点组建成双链表。为了便于理解,以下结合图4对双链表的结构进行说明。图4为本申请实施例中双链表的示意图,请参阅图4,以伪代码函数sub_45044c为例,取该函数的某一行代码进行示例姓介绍。如图4所示,该行代码为“void sub_45044c(int v1)”,按照语法元素的类别进行拆分可以依次得到“void”、“sub_45044c”、“(”、“int”、“v1”、“)”这6个节点,并按顺序将这6个节点连接起来,可以成为双链表中的一部分。
因此,在多个伪代码函数中,将第一个伪代码函数的进行拆分,该函数第一行代码的第一个节点可以作为双链表的初始点,然后依次连接后续的节点,直到连接至最后一个伪代码函数中最后一行代码的最后一个节点,将最后一个节点作为终结点,然后将初始点和终结点连接,得到完整的双链表。
可以理解的是,双链表即为将多个伪代码函数进行首尾相连的数据结构,有利于提高检测效率。得到双链表后,则可以对双链表进行检测,本实施例中还预置有多个风险特征代码,如解空引用、错误函数名等特征代码,若从双链表中检测出风险特征代码,则可确定出现风险特征代码所在的伪代码函数,视为存在风险的目标伪代码函数。
确定目标伪代码函数后,则可以确定相应的目标源代码函数,然后输出安装包的检测结果,通常该检测结果包括目标源代码函数的检测信息。更进一步地,该检测信息可以包括目标源代码函数的函数名、目标源代码函数内存在的风险(如函数内所具有的风险特征代码、风险特征代码所出现的位置等信息)。
图5为本申请实施例中安装包检测的装置的一个结构示意图,请参阅图5,本申请实施例中安装包检测的装置的一个实施例,该实施例包括:
第一获取模块501,用于获取安装包的第一安装文件,第一安装文件包括多个ARM指令,至少一个ARM指令对应一个源代码函数;
反汇编模块502,用于对第一安装文件进行反汇编,得到第二安装文件,第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个ARM指令;
检测模块503,用于对多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
确定模块504,用于在多个源代码函数中确定与目标伪代码函数对应的目标源代码函数;
输出模块505,用于输出安装包检测结果,安装包检测结果包括目标源代码函数的检测信息。
可选的,基于图5所对应的实施例,本申请实施例中安装包检测的装置的一个可选实施例中,第一安装文件还包括多个汇编指令地址,一个ARM指令对应一个汇编指令地址,至少一个汇编指令地址还对应一个源代码函数。
可选的,基于图5所对应的各个实施例,本申请实施例中安装包检测的装置的一个可选实施例中,检测模块还用于:
根据多个伪代码函数构建双链表,双链表的每一个节点为伪代码函数的一个语法元素;
对双链表进行检测,得到存在风险的目标伪代码函数。
可选的,基于图5所对应的各个实施例,本申请实施例中安装包检测的装置的一个可选实施例中,检测模块还用于:
根据多个伪代码函数构建双链表,双链表的每一个节点为伪代码函数的一个语法元素;
若双链表具有风险特征代码,则在双链表中,将与风险特征代码对应的伪代码函数确定为存在风险的目标伪代码函数。
可选的,基于图5所对应的各个实施例,本申请实施例中安装包检测的装置的一个可选实施例中,该装置还包括:
第二获取模块,用于获取安装包的第三安装文件;
第三获取模块,用于从第三安装文件中获取汇编指令地址与源代码函数之间的对应关系;
目标伪代码函数的函数名包括目标汇编指令地址,确定模块还用于:
基于地址与源代码函数之间的对应关系,在多个源代码函数中确定与目标地址对应的目标源代码函数。
可选的,基于图5所对应的各个实施例,本申请实施例中安装包检测的装置的一个可选实施例中,该装置还包括:
第四获取模块,用于获取安装包的第四安装文件;
反编译模块,用于对第四安装文件进行反编译,得到第一安装文件。
需要说明的是,上述装置各模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
本申请实施例还提供了一种终端设备,如图6所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(personal digital assistant,PDA)、销售终端(point of sales,POS)、车载电脑等任意终端设备,以终端为手机为例:
图6为本申请实施例提供的终端设备的结构框图。参考图6,手机包括:射频(radiofrequency,RF)电路610、存储器620、输入单元630、显示单元640、传感器650、音频电路660、无线保真(wireless fidelity,WiFi)模块670、处理器680、以及电源690等部件。本领域技术人员可以理解,图6中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对手机的各个构成部件进行具体的介绍:
RF电路610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器680处理;另外,将设计上行的数据发送给基站。通常,RF电路610包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路610还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元630可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元630可包括触控面板631以及其他输入设备632。触控面板631,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板631上或在触控面板631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板631可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板631。除了触控面板631,输入单元630还可以包括其他输入设备632。具体地,其他输入设备632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元640可包括显示面板641,可选的,可以采用液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板641。进一步的,触控面板631可覆盖显示面板641,当触控面板631检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板641上提供相应的视觉输出。虽然在图6中,触控面板631与显示面板641是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板631与显示面板641集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板641的亮度,接近传感器可在手机移动到耳边时,关闭显示面板641和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器661,传声器662可提供用户与手机之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器661,由扬声器661转换为声音信号输出;另一方面,传声器662将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一手机,或者将音频数据输出至存储器620以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块670,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器680是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器680可包括一个或多个处理单元;可选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
手机还包括给各个部件供电的电源690(比如电池),可选的,电源可以通过电源管理***与处理器680逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器680还具有以下功能:
获取安装包的第一安装文件,第一安装文件包括多个高级精简指令集机器ARM指令,至少一个ARM指令对应一个源代码函数;
对第一安装文件进行反汇编,得到第二安装文件,第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个ARM指令;
对多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
在多个源代码函数中确定与目标伪代码函数对应的目标源代码函数;
输出安装包检测结果,安装包检测结果包括目标源代码函数的检测信息。
本实施例通过对第一安装文件进行反汇编从而得到第二安装文件,即将第一安装文件中的ARM指令转换成第二安装文件中的伪代码函数,因为每一个伪代码函数由至少一个ARM指令转换生成,简化了安装文件中的代码结构并减少了代码数量,故在伪代码函数的风险检测过程中,由于伪代码函数的代码结构精简且数量较少,可以快速找出存在风险的目标伪代码函数,进而确定目标源代码函数以完成安装包的检测,能够减少检测所用的时间,提高检测效率。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如上述的安装包检测的方法。
本申请实施例还涉及一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上述的安装包检测的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种安装包检测的方法,其特征在于,所述方法包括:
获取安装包的第一安装文件,所述第一安装文件包括多个高级精简指令集机器ARM指令,至少一个ARM指令对应一个源代码函数;
对所述第一安装文件进行反汇编,得到第二安装文件,所述第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个所述ARM指令;
对所述多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
在多个源代码函数中确定与所述目标伪代码函数对应的目标源代码函数;
输出安装包检测结果,所述安装包检测结果包括所述目标源代码函数的检测信息。
2.根据权利要求1所述的安装包检测的方法,其特征在于,所述第一安装文件还包括多个汇编指令地址,一个ARM指令对应一个汇编指令地址,所述至少一个汇编指令地址还对应所述一个源代码函数。
3.根据权利要求1所述的安装包检测的方法,其特征在于,所述对所述多个伪代码函数进行检测,得到存在风险的目标伪代码函数包括:
根据所述多个伪代码函数构建双链表,所述双链表的每一个节点为伪代码函数的一个语法元素;
对所述双链表进行检测,得到存在风险的目标伪代码函数。
4.根据权利要求3所述的安装包检测的方法,其特征在于,所述对所述双链表进行检测,得到存在风险的目标伪代码函数包括:
若所述双链表具有风险特征代码,则在所述双链表中,将与所述风险特征代码对应的所述伪代码函数确定为存在风险的目标伪代码函数。
5.根据权利要求2所述的安装包检测的方法,其特征在于,所述方法还包括:
获取所述安装包的第三安装文件;
从所述第三安装文件中获取汇编指令地址与源代码函数之间的对应关系;
所述目标伪代码函数的函数名包括目标汇编指令地址,所述在多个源代码函数中确定与所述目标伪代码函数对应的目标源代码函数包括:
基于所述地址与源代码函数之间的对应关系,在多个源代码函数中确定与所述目标地址对应的目标源代码函数。
6.根据权利要求1至5任意一项所述的安装包检测的方法,其特征在于,所述获取安装包的第一安装文件之前还包括:
获取所述安装包的第四安装文件;
对所述第四安装文件进行反编译,得到所述第一安装文件。
7.一种安装包检测的装置,其特征在于,包括:
第一获取模块,用于获取安装包的第一安装文件,所述第一安装文件包括多个ARM指令,至少一个ARM指令对应一个源代码函数;
反汇编模块,用于对所述第一安装文件进行反汇编,得到第二安装文件,所述第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个所述ARM指令;
检测模块,用于对所述多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
确定模块,用于在多个源代码函数中确定与所述目标伪代码函数对应的目标源代码函数;
输出模块,用于输出安装包检测结果,所述安装包检测结果包括所述目标源代码函数的检测信息。
8.一种终端设备,其特征在于,包括:存储器、收发器、处理器以及总线***;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,包括如下步骤:
获取安装包的第一安装文件,所述第一安装文件包括多个ARM指令,至少一个ARM指令对应一个源代码函数;
对所述第一安装文件进行反汇编,得到第二安装文件,所述第二安装文件包括多个伪代码函数,一个伪代码函数对应至少一个所述ARM指令;
对所述多个伪代码函数进行检测,得到存在风险的目标伪代码函数;
在多个源代码函数中确定与所述目标伪代码函数对应的目标源代码函数;
输出安装包检测结果,所述安装包检测结果包括所述目标源代码函数的检测信息;
所述总线***用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至6中任一项所述的方法。
10.一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如权利要求1至6中任意一项所述的方法。
CN201910679524.0A 2019-07-25 2019-07-25 一种安装包检测的方法及相关装置 Active CN110378107B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910679524.0A CN110378107B (zh) 2019-07-25 2019-07-25 一种安装包检测的方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910679524.0A CN110378107B (zh) 2019-07-25 2019-07-25 一种安装包检测的方法及相关装置

Publications (2)

Publication Number Publication Date
CN110378107A true CN110378107A (zh) 2019-10-25
CN110378107B CN110378107B (zh) 2024-05-10

Family

ID=68256201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910679524.0A Active CN110378107B (zh) 2019-07-25 2019-07-25 一种安装包检测的方法及相关装置

Country Status (1)

Country Link
CN (1) CN110378107B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825386A (zh) * 2019-11-01 2020-02-21 腾讯科技(深圳)有限公司 代码的编译方法和装置、存储介质
CN112035158A (zh) * 2020-08-25 2020-12-04 深圳市钱海网络技术有限公司 一种对补丁包进行风险检测的方法及装置
CN114138282A (zh) * 2021-11-30 2022-03-04 四川效率源信息安全技术股份有限公司 一种还原iOS类型编码的伪代码的方法及装置
CN114510409A (zh) * 2020-11-17 2022-05-17 腾讯科技(深圳)有限公司 一种应用程序代码检测方法和计算机可读存储介质
CN115361543A (zh) * 2022-10-21 2022-11-18 武汉光谷信息技术股份有限公司 一种基于arm架构的异构数据融合与推流方法、***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105303112A (zh) * 2014-06-24 2016-02-03 腾讯科技(深圳)有限公司 组件调用漏洞的检测方法及装置
CN106295348A (zh) * 2015-05-29 2017-01-04 阿里巴巴集团控股有限公司 应用程序的漏洞检测方法及装置
CN106650452A (zh) * 2016-12-30 2017-05-10 北京工业大学 一种Android***内置应用漏洞挖掘方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105303112A (zh) * 2014-06-24 2016-02-03 腾讯科技(深圳)有限公司 组件调用漏洞的检测方法及装置
CN106295348A (zh) * 2015-05-29 2017-01-04 阿里巴巴集团控股有限公司 应用程序的漏洞检测方法及装置
CN106650452A (zh) * 2016-12-30 2017-05-10 北京工业大学 一种Android***内置应用漏洞挖掘方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825386A (zh) * 2019-11-01 2020-02-21 腾讯科技(深圳)有限公司 代码的编译方法和装置、存储介质
CN110825386B (zh) * 2019-11-01 2023-07-14 腾讯科技(深圳)有限公司 代码的编译方法和装置、存储介质
CN112035158A (zh) * 2020-08-25 2020-12-04 深圳市钱海网络技术有限公司 一种对补丁包进行风险检测的方法及装置
CN114510409A (zh) * 2020-11-17 2022-05-17 腾讯科技(深圳)有限公司 一种应用程序代码检测方法和计算机可读存储介质
CN114138282A (zh) * 2021-11-30 2022-03-04 四川效率源信息安全技术股份有限公司 一种还原iOS类型编码的伪代码的方法及装置
CN114138282B (zh) * 2021-11-30 2023-03-31 四川效率源信息安全技术股份有限公司 一种还原iOS类型编码的伪代码的方法及装置
CN115361543A (zh) * 2022-10-21 2022-11-18 武汉光谷信息技术股份有限公司 一种基于arm架构的异构数据融合与推流方法、***
CN115361543B (zh) * 2022-10-21 2023-03-24 武汉光谷信息技术股份有限公司 一种基于arm架构的异构数据融合与推流方法、***

Also Published As

Publication number Publication date
CN110378107B (zh) 2024-05-10

Similar Documents

Publication Publication Date Title
CN110378107A (zh) 一种安装包检测的方法及相关装置
CN107943683B (zh) 一种测试脚本生成方法、装置、电子设备及存储介质
CN106354458B (zh) 双屏显示方法及装置
CN103702297B (zh) 短信增强方法、装置及***
CN108897562A (zh) 安装包更新方法、装置、介质以及设备
CN104426963B (zh) 关联终端的方法和终端
CN106227588A (zh) 一种多实例对象的创建方法、装置及移动终端
CN107276602B (zh) 射频干扰处理方法、装置、存储介质及终端
CN105389259B (zh) 一种进行应用程序测试的方法、装置及***
CN107622200A (zh) 应用程序的安全性检测方法及装置
CN110058850A (zh) 一种应用的开发方法、装置以及存储介质
CN109189258A (zh) 记录笔记的方法及装置
CN108073495A (zh) 应用程序崩溃原因的定位方法及装置
CN107219951A (zh) 触控屏控制方法、装置、存储介质及终端设备
CN107423794A (zh) 一种图形编码的扫码方法、装置和移动终端
CN110210605A (zh) 硬件算子匹配方法及相关产品
CN108834132A (zh) 一种数据传输方法及设备和相关介质产品
CN107908407A (zh) 编译方法、装置及终端设备
CN106201547A (zh) 一种基于移动终端的消息显示的方法、装置及移动终端
CN109656510A (zh) 一种网页中语音输入的方法及终端
CN108628900A (zh) 一种数据格式获取的方法以及相关装置
CN106959859A (zh) ***调用函数的调用方法与装置
CN106202422B (zh) 网页图标的处理方法和装置
CN110413639A (zh) 数据核查方法及装置、电子设备和计算机可读存储介质
CN106598583A (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