CN112035354B - 风险代码的定位方法、装置、设备及存储介质 - Google Patents

风险代码的定位方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112035354B
CN112035354B CN202010889811.7A CN202010889811A CN112035354B CN 112035354 B CN112035354 B CN 112035354B CN 202010889811 A CN202010889811 A CN 202010889811A CN 112035354 B CN112035354 B CN 112035354B
Authority
CN
China
Prior art keywords
thread
operating system
code
file
test
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
CN202010889811.7A
Other languages
English (en)
Other versions
CN112035354A (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 Zhizhangyi Technology Co ltd
Original Assignee
Beijing Zhizhangyi 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 Zhizhangyi Technology Co ltd filed Critical Beijing Zhizhangyi Technology Co ltd
Priority to CN202010889811.7A priority Critical patent/CN112035354B/zh
Publication of CN112035354A publication Critical patent/CN112035354A/zh
Application granted granted Critical
Publication of CN112035354B publication Critical patent/CN112035354B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种风险代码的定位方法、装置、设备及存储介质。该方法包括:对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;对所述日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;根据所述实现线程递归查询所述线程记录文件,获取与所述实现线程匹配的起源线程,并定位与所述起源线程匹配的风险代码。本发明实施例的技术方案,可以检测出待检测应用程序的动态违规行为,并准确定位到导致违规行为的风险代码。

Description

风险代码的定位方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种风险代码的定位方法、装置、设备及存储介质。
背景技术
随着保护公民隐私的相关法律越来越完善,终端应用侵犯公民隐私的行为越来越被重视。
现有技术中,在业务逻辑中发生异常崩溃时,会自动打印出堆栈,以帮助开发人员追溯到发生问题的源代码。但侵犯公民个人隐私等违法违规行为,在程序逻辑中属于正常逻辑,在程序运行时不会有告警,更加不会提示侵犯隐私的风险代码在源代码中的位置。
发明内容
本发明提供一种风险代码的定位方法、装置、设备及存储介质,以检测出待检测应用程序的动态违规行为,并准确定位到导致违规行为的风险代码。
第一方面,本发明实施例提供了一种风险代码的定位方法,包括:
对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;
其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;
对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;
根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码。
可选的,在对安装于操作***中的待测应用程序进行运行测试之前,还包括:
获取操作***的源码文件;
在源码文件中的新线程创建位置加入打点代码,并在源码文件中的至少一个待监控的***功能位置加入打点代码;
在测试终端中安装加入打点代码的源码文件,以生成操作***,并在测试终端中安装待测应用程序。
可选的,对安装于操作***中的待测应用程序进行运行测试,包括:
对安装于沙箱中的待测应用程序进行运行测试;沙箱安装于操作***中;
在对安装于操作***中待测应用程序进行运行测试之前,还包括:
利用沙箱,截获操作***的源码文件中的新线程创建位置,并在新线程创建位置加入打点代码;
利用沙箱,截获操作***的源码文件中的至少一个待监控的***功能位置,并在各待监控的***功能位置加入打点代码;
在测试终端中安装加入打点代码的沙箱,并在沙箱中安装待测应用程序。
可选的,对安装于操作***中的待测应用程序进行运行测试,包括:
响应于对源码文件中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与操作***对应的线程记录文件中;
响应于对源码文件中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与操作***对应的日志文件中。
可选的,对安装于操作***中的待测应用程序进行运行测试,包括:
响应于对沙箱中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与沙箱对应的线程记录文件中;
响应于对沙箱中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与沙箱对应的日志文件中。
可选的,对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程,包括:
获取日志文件中的目标操作信息,判断目标操作信息中是否包括用户隐私信息;
如果目标操作信息中包括用户隐私信息,则将日志文件中与目标操作信息匹配的目标线程的标识,作为获取用户隐私信息的目标***功能的实现线程的标识。
可选的,定位与起源线程匹配的风险代码,包括:
获取日志文件中的起源线程的调用堆栈,并按照栈底到栈顶的顺序,从所述调用堆栈中查找第一个非操作***的函数名;
根据第一个非操作***的函数名,定位与起源线程匹配的风险代码。
第二方面,本发明实施例还提供了一种风险代码的定位装置,包括:
获取模块,用于对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;
其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;
解析模块,用于对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;
定位模块,用于根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码。
第三方面,本发明实施例还提供了一种电子设备,电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例提供的风险代码的定位方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例提供的风险代码的定位方法。
本发明实施例的技术方案,通过对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码,解决了现有技术中存在的无法追溯到侵犯隐私的风险代码在源代码中的位置的问题,可以检测出待检测应用程序的动态违规行为,并准确定位到导致违规行为的风险代码。
附图说明
图1是本发明实施例一中的一种风险代码的定位方法的流程图;
图2是本发明实施例二中的一种风险代码的定位方法的流程图;
图3是本发明实施例三中的一种风险代码的定位装置的结构示意图;
图4是本发明实施例四中的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一中的一种风险代码的定位方法的流程图,本实施例可适用于确定导致违规行为的风险代码,在待测应用程序或者操作***中的具***置的情况,该方法可以由风险代码的定位装置来执行,该装置可以由硬件和/或软件来实现,并一般可以集成在提供风险代码定位服务的电子设备中,如终端设备中。如图1所示,该方法包括:
步骤110、对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件。
其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系。
本实施例中,操作***可以是iOS操作***,也可以是安卓操作***,或者其他可以运行应用程序的操作***,将待测应用程序安装于操作***中后,在操作***中正常运行待测应用程序,以检测待测应用程序或者操作***是否有侵犯用户隐私信息的违规行为。
本实施例中,为了在待测应用程序在操作***中运行的过程中,能够实时记录操作***或者待测应用程序的可疑的操作信息,可以预先在操作***的源代码中可能发生侵犯用户隐私行为的位置加入打点代码。
可选的,在对安装于操作***中的待测应用程序进行运行测试之前,还可以包括:获取操作***的源码文件;在源码文件中的新线程创建位置加入打点代码,并在源码文件中的至少一个待监控的***功能位置加入打点代码;在测试终端中安装加入打点代码的源码文件,以生成操作***,并在测试终端中安装待测应用程序。
本实施例中,针对操作***的源代码可以获取的情况,获取操作***的源码文件,例如,针对开源的安卓操作***,可以下载操作***的源码文件。然后,在源码文件中查找可能发生侵犯用户隐私行为的源代码,例如,操作***创建新线程的源代码,或者与调用摄像头、打开麦克风等待监控的***功能对应的源代码,并在新线程创建位置以及至少一个待监控的***功能位置加入打点代码。然后,将加入打点代码的源码文件安装至待测应用程序所在的测试终端中,以在测试终端中生成操作***,并在操作***中安装待测应用程序,以监控待测应用程序中或者操作***中,是否有侵犯用户隐私行为的风险代码。
其中,待监控的***功能可以是操作***提供给待测应用程序使用的任意功能,待监控的***功能是由操作***实现的,而不是由待测应用程序实现的,待测应用程序只是使用该***功能。
可选的,对安装于操作***中的待测应用程序进行运行测试,可以包括:对安装于沙箱中的待测应用程序进行运行测试;沙箱安装于操作***中;
在对安装于操作***中待测应用程序进行运行测试之前,还可以包括:利用沙箱,截获操作***的源码文件中的新线程创建位置,并在新线程创建位置加入打点代码;利用沙箱,截获操作***的源码文件中的至少一个待监控的***功能位置,并在各待监控的***功能位置加入打点代码;在测试终端中安装加入打点代码的沙箱,并在沙箱中安装待测应用程序。
本实施例中,针对操作***的源代码无法获取的情况,为了能够在待测应用程序运行的过程中,实时记录待测应用程序或者操作***的可疑的操作信息,可以使用沙箱技术,通过钩子hook函数截获操作***的源码文件中的新线程创建位置,以及至少一个待监控的***功能位置,并在各位置处加入打点代码。然后将加入打点代码后的沙箱安装到操作***中,由沙箱提供一个虚拟的操作***环境,并将待测应用程序安装到沙箱中,从而沙箱可以获取待测应用程序以及操作***的所有操作信息。
可选的,对安装于操作***中的待测应用程序进行运行测试,可以包括:响应于对源码文件中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与操作***对应的线程记录文件中;响应于对源码文件中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与操作***对应的日志文件中。
本实施例中,当操作***新建一个线程时,调用在新线程创建位置加入的打点代码,获取父线程的标识、新创建的子线程的标识,以及父线程的调用堆栈,并存到线程记录文件中,以记录线程与线程之间的关系。其中,线程的标识可以由该线程的标识符和该线程在操作***中对应的进程的标识符组合得到。线程的调用堆栈中,从栈底到栈顶依次存放该线程调用的函数名,可以用于记录函数的调用顺序,定位风险代码在源代码中的位置。当操作***实现待监控的***功能时,调用在该位置加入的打点代码,以记录操作***在该位置的操作类型、具体操作、操作数据等特征信息,实现待监控功能的线程的标识,以及该线程的调用堆栈,并将记录的数据保存在日志文件中。其中,操作类型和具体操作用于分析违规行为的违规类型。
可选的,对安装于操作***中的待测应用程序进行运行测试,可以包括:响应于对沙箱中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与沙箱对应的线程记录文件中;响应于对沙箱中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与沙箱对应的日志文件中。
本实施例中,当通过沙箱新建一个线程时,调用在新线程创建位置加入的打点代码,获取父线程的标识、新创建的子线程的标识,以及父线程的调用堆栈,并存到线程记录文件中,以记录线程与线程之间的关系。当通过沙箱实现待监控的***功能时,调用在该位置加入的打点代码,以记录沙箱在该位置的操作类型、具体操作、操作数据等特征信息,实现待监控功能的线程的标识,以及该线程的调用堆栈,并将记录的数据保存在日志文件中。
步骤120、对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程。
可选的,对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程,可以包括:获取日志文件中的目标操作信息,判断目标操作信息中是否包括用户隐私信息;如果目标操作信息中包括用户隐私信息,则将日志文件中与目标操作信息匹配的目标线程的标识,作为获取用户隐私信息的目标***功能的实现线程的标识。
本实施例中,在获取日志文件以及线程记录文件之后,从日志记录文件中获取各个操作信息,并依次判断与各个操作信息对应的线程是否有违规行为。以目标操作信息为例,判断目标操作信息中是否包括用户隐私信息的明文,例如,用户联系方式、用户身份证号码以及用户邮箱等信息,如果包括,则认为捕获到违规行为,并将与目标操作信息匹配的线程标识,作为获取用户隐私信息的目标***功能的实现线程的标识。
步骤130、根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码。
本实施例中,在捕获到有违规行为的实现线程后,为了追溯到实现线程的创建者,找到真实的线程调用者,可以将实现线程作为当前线程,根据当前线程的标识递归查询线程记录文件,获取当前线程的父线程的标识,将父线程作为当前线程,返回执行根据当前线程的标识递归查询线程记录文件的操作,直至找不到当前线程的父线程,将当前线程作为与实现线程匹配的起源线程。其中,起源线程可能是待测应用程序中的线程,也可能是操作***中的线程。
可选的,定位与起源线程匹配的风险代码,可以包括:获取日志文件中的起源线程的调用堆栈,并按照栈底到栈顶的顺序,从所述调用堆栈中查找第一个非操作***的函数名;根据第一个非操作***的函数名,定位与起源线程匹配的风险代码。
本实施例中,由于线程的调用堆栈中,从栈底到栈顶存放着该线程依次调用的函数名,因此,在确定起源线程后,从日志文件中获取起源线程的调用堆栈,按照函数调用顺序,从栈底到栈顶的函数名中,逐个查找第一个调用的非操作***的函数名,则该函数名即为起源线程调用的违规函数的函数名,根据该函数名,即可定位到导致违规行为的风险代码在源代码中的具***置,从而可以对风险代码进行修改,避免继续出现违规行为。
本发明实施例的技术方案,通过对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码,解决了现有技术中存在的无法追溯到侵犯隐私的风险代码在源代码中的位置的问题,可以检测出待检测应用程序的动态违规行为,并准确定位到导致违规行为的风险代码。
实施例二
图2是本发明实施例二中的一种风险代码的定位方法的流程图,本实施例在上述实施例的基础上进一步细化。下面结合图2对本申请第二实施例提供的一种风险代码的定位方法进行说明,包括以下步骤:
步骤210、判断是否能获取待测应用程序所在测试终端的操作***的源码文件,如果能,执行步骤220,否则,执行步骤250。
本实施例中,为了在待测应用程序运行的过程中,能够实时记录操作***或者待测应用程序的可疑的操作信息,需要预先在操作***的源代码中的可能发生侵犯用户隐私行为的位置加入打点代码,因此,需要先确定操作***的源码文件是否可以直接获取到。
示例性的,假设要检测一个安卓浏览器应用的http请求中是否提交了用户个人信息的明文,即待测应用程序为安卓浏览器,操作***为安卓操作***,由于安卓操作***是开源的,因此,可以获取到操作***的源码文件。又假设要检测一个iOS应用写过的文件中是否包含用户身份证号码明文,即操作***为iOS操作***,由于iOS操作***是不开源的,因此,无法获取到操作***的源码文件。
步骤220、获取操作***的源码文件,在源码文件中的新线程创建位置加入打点代码,以记录父线程与被创建的子线程的标识,以及父线程的调用堆栈,并存储至与操作***对应的线程记录文件中。
示例性的,在安卓操作***的源码文件中的创建新线程的位置,例如java.lang.Thread、android.os.Handler等类中,加入打点代码,以在java.lang.Thread等类被执行时,可以将父线程的标识、子线程的标识以及父线程的调用堆栈,对应存储在一份线程记录文件中,记录线程与线程之间的关系。
步骤230、在源码文件中的至少一个待监控的***功能位置加入打点代码,以记录当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并保存在与操作***对应的日志文件中。
其中,待监控的***功能位置可以是***权限的调用位置以及其他易发生违规的函数位置。
示例性的,在安卓操作***的org.apache.http.client.methods.HttpGet类和org.apache.http.client.methods.HttpPost类中埋入打点代码,以在打点代码被触发时,记录该位置的操作信息,例如,该位置的操作类型为网络操作,具体操作动作为HttpGet或HttpPost,操作内容为提交的文本,以及当前线程的标识、线程的调用堆栈,并将这些数据写入到日志文件中,以便于后续根据日志文件分析是否有违规行为。
步骤240、编译加入打点代码的源码文件,生成ROM并烧到测试终端中,将待测应用程序安装至测试终端中。
示例性的,编译加入打点代码的安卓操作***的源码文件,生成ROM并烧到一台Google的原生手机上,并将待检测的安卓浏览器也安装到该手机上。其中,对安卓***而言,编译***源代码生成的ROM是一个名称为system.img的文件,大小在数百MB到数GB之间,用于烧写到安卓手机上。
步骤250、使用沙箱,通过hook技术截获创建新线程的位置并加入打点代码,以记录父线程与被创建的子线程的标识,以及父线程的调用堆栈,并存储至与沙箱对应的线程记录文件中。
示例性的,使用iOS沙箱,利用hook函数截获操作***的源码文件中的创建新线程的位置,例如,hook源码文件中的NSThread类,并加入打点代码,以在NSThread类被执行时,可以将父线程的标识、子线程的标识以及父线程的调用堆栈,对应存储在线程记录文件中,记录线程与线程之间的关系。
步骤260、使用沙箱,利用hook函数截获源码文件中的至少一个待监控的***功能位置加入打点代码,以记录当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并保存在与沙箱对应的日志文件中。
本实施例中,使用沙箱截获源码文件中的***权限的调用位置和其他易发生违规的函数位置,并在各位置加入打点代码,例如,hook源码文件中的NSFileManager类,并在该位置加入打点代码,以在打点代码被触发时,记录该位置处的操作类型为文件操作,具体的操作动作为写文件,操作内容为保存的数据文本,以及当前线程的标识、线程的调用堆栈,并将这些数据写入到日志文件中,以便于后续根据日志文件分析是否有违规行为。
其中,对iOS操作***来说,***权限是指调用摄像头、麦克风、定位等权限的能力,只有用户明确点击允许授权,授予待测应用程序这些权限,待测应用程序才能使用操作***的摄像头、麦克风等资源。
步骤270、编译加入打点代码的沙箱并安装到测试终端中,将待测应用程序以沙箱应用的方式安装至测试终端。
本实施例中,对加入打点代码的沙箱进行编译,并安装至测试终端中后,将待测应用程序安装至沙箱中。
步骤280、运行待测应用程序,同时抓取日志文件和线程记录文件。
示例性的,在操作***中运行安卓浏览器,或者在沙箱中运行iOS应用,正常使用待测应用程序的功能,同时抓取待测应用程序运行过程中生成的日志文件和线程记录文件。
步骤290、分析日志文件和线程记录文件,通过文件中的线程的调用堆栈追溯风险代码。
示例性的,可以查看与操作***对应的日志文件和线程记录文件,检查日志文件中的HttpGet类和HttpPost类的日志,查看日志中的操作内容是否包含用户个人信息的明文,如果包含,则确定浏览器应用违规,此时,可以通过线程记录文件中的线程的调用堆栈,精确追溯到触发此次违规的源代码的具***置。
示例性的,可以查看与沙箱对应的日志文件和线程记录文件,检查日志文件中的NSFileManager类的日志,查看日志中的操作内容是否包含用户身份证号码明文,如果包含,则确定iOS应用有违规行为,此时,可以通过线程记录文件中的线程的调用堆栈,精确追溯到触发此次违规的源代码的具***置。
本实施例中,根据线程的调用堆栈,定位触发违规的风险代码,可以包括:将日志文件中与目标操作信息匹配的目标线程的标识,作为获取用户隐私信息的目标***功能的实现线程的标识,根据实现线程的标识,递归查询线程记录文件,获取与实现线程匹配的起源线程,从日志文件中获取起源线程的调用堆栈,按照函数调用顺序,从栈底到栈顶的函数名中,逐个查找第一个调用的非操作***的函数名,则该函数名即为起源线程调用的违规函数的函数名,根据该函数名,即可定位到导致违规行为的风险代码在源代码中的具***置。
本发明实施例的技术方案,通过对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码,解决了现有技术中存在的无法追溯到侵犯隐私的风险代码在源代码中的位置的问题,可以检测出待检测应用程序的动态违规行为,并准确定位到导致违规行为的风险代码。
实施例三
图3是本发明实施例三中的一种风险代码的定位装置的结构示意图,本实施例可适用于确定导致违规行为的风险代码,在待测应用程序或者操作***中的具***置的情况,该装置可以由硬件和/或软件来实现,并一般可以集成在提供风险代码定位服务的电子设备中,如终端设备中。如图3所示,该装置包括:
获取模块310,用于对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;
其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;
解析模块320,用于对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;
定位模块330,用于根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码。
本发明实施例的技术方案,通过对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码,解决了现有技术中存在的无法追溯到侵犯隐私的风险代码在源代码中的位置的问题,可以检测出待检测应用程序的动态违规行为,并准确定位到导致违规行为的风险代码。
可选的,还包括:第一埋点模块,用于在对安装于操作***中的待测应用程序进行运行测试之前,获取操作***的源码文件;在源码文件中的新线程创建位置加入打点代码,并在源码文件中的至少一个待监控的***功能位置加入打点代码;在测试终端中安装加入打点代码的源码文件,以生成操作***,并在测试终端中安装待测应用程序。
可选的,获取模块310,用于:对安装于沙箱中的待测应用程序进行运行测试;沙箱安装于操作***中;
装置还包括:第二埋点模块,用于在对安装于操作***中待测应用程序进行运行测试之前,利用沙箱,截获操作***的源码文件中的新线程创建位置,并在新线程创建位置加入打点代码;利用沙箱,截获操作***的源码文件中的至少一个待监控的***功能位置,并在各待监控的***功能位置加入打点代码;在测试终端中安装加入打点代码的沙箱,并在沙箱中安装待测应用程序。
可选的,获取模块310,包括:第一获取子单元,用于响应于对源码文件中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与操作***对应的线程记录文件中;响应于对源码文件中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与操作***对应的日志文件中。
可选的,获取模块310,包括:第二获取子单元,用于响应于对沙箱中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与沙箱对应的线程记录文件中;响应于对沙箱中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与沙箱对应的日志文件中。
可选的,解析模块320,用于:获取日志文件中的目标操作信息,判断目标操作信息中是否包括用户隐私信息;如果目标操作信息中包括用户隐私信息,则将日志文件中与目标操作信息匹配的目标线程的标识,作为获取用户隐私信息的目标***功能的实现线程的标识。
可选的,定位模块330,用于:获取日志文件中的起源线程的调用堆栈,并按照栈底到栈顶的顺序,从所述调用堆栈中查找第一个非操作***的函数名;根据第一个非操作***的函数名,定位与起源线程匹配的风险代码。
本发明实施例所提供的风险代码的定位装置可执行本发明任意实施例所提供的风险代码的定位方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例公开的一种电子设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备12的框图。图4显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
设备12典型地包括多种计算机***可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
处理单元16通过运行存储在***存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的风险代码的定位方法。
也即:实现一种风险代码的定位方法,包括:对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码。
实施例五
本发明实施例五还提供一种计算机可读存储介质,其上存储有计算机程序,程序在被计算机处理器执行时用于执行一种风险代码的定位方法,该方法包括:
对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;对日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;根据实现线程递归查询线程记录文件,获取与实现线程匹配的起源线程,并定位与起源线程匹配的风险代码。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种风险代码的定位方法,其特征在于,包括:
对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;
其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;
对所述日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;
根据所述实现线程递归查询所述线程记录文件,获取与所述实现线程匹配的起源线程,并定位与所述起源线程匹配的风险代码;
在对安装于操作***中的待测应用程序进行运行测试之前,还包括:
获取所述操作***的源码文件;
在所述源码文件中的新线程创建位置加入打点代码,并在所述源码文件中的至少一个待监控的***功能位置加入打点代码;
在测试终端中安装加入所述打点代码的源码文件,以生成所述操作***,并在所述测试终端中安装所述待测应用程序。
2.根据权利要求1所述的方法,其特征在于,对安装于操作***中的待测应用程序进行运行测试,包括:
对安装于沙箱中的待测应用程序进行运行测试;所述沙箱安装于操作***中;
在对安装于操作***中待测应用程序进行运行测试之前,还包括:
利用沙箱,截获操作***的源码文件中的新线程创建位置,并在所述新线程创建位置加入打点代码;
利用沙箱,截获操作***的源码文件中的至少一个待监控的***功能位置,并在各所述待监控的***功能位置加入打点代码;
在测试终端中安装加入所述打点代码的沙箱,并在所述沙箱中安装待测应用程序。
3.根据权利要求1所述的方法,其特征在于,对安装于操作***中的待测应用程序进行运行测试,包括:
响应于对所述源码文件中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与所述操作***对应的线程记录文件中;
响应于对所述源码文件中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与所述操作***对应的日志文件中。
4.根据权利要求2所述的方法,其特征在于,对安装于操作***中的待测应用程序进行运行测试,包括:
响应于对所述沙箱中的新线程创建位置的打点代码的触发操作,获取父线程的标识、子线程的标识以及父线程的调用堆栈,并存储至与所述沙箱对应的线程记录文件中;
响应于对所述沙箱中的至少一个待监控的***功能位置的打点代码的触发操作,获取当前线程的标识、当前位置的操作信息以及当前线程的调用堆栈,并存储至与所述沙箱对应的日志文件中。
5.根据权利要求3或4所述的方法,其特征在于,对所述日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程,包括:
获取所述日志文件中的目标操作信息,判断所述目标操作信息中是否包括用户隐私信息;
如果所述目标操作信息中包括用户隐私信息,则将所述日志文件中与目标操作信息匹配的目标线程的标识,作为获取用户隐私信息的目标***功能的实现线程的标识。
6.根据权利要求5所述的方法,其特征在于,定位与所述起源线程匹配的风险代码,包括:
获取所述日志文件中的起源线程的调用堆栈,并按照栈底到栈顶的顺序,从所述调用堆栈中查找第一个非操作***的函数名;
根据所述第一个非操作***的函数名,定位与所述起源线程匹配的风险代码。
7.一种风险代码的定位装置,其特征在于,包括:
获取模块,用于对安装于操作***中的待测应用程序进行运行测试,并在测试结束后,获取与操作***对应的日志文件和线程记录文件;
其中,日志文件中包括操作***在测试过程中所执行的至少一个***功能的描述信息,线程记录文件中包括操作***在测试过程中的线程间调用关系;
解析模块,用于对所述日志文件进行解析,并识别获取用户隐私信息的目标***功能的实现线程;
定位模块,用于根据所述实现线程递归查询所述线程记录文件,获取与所述实现线程匹配的起源线程,并定位与所述起源线程匹配的风险代码;
第一埋点模块,用于在对安装于操作***中的待测应用程序进行运行测试之前,获取操作***的源码文件;在源码文件中的新线程创建位置加入打点代码,并在源码文件中的至少一个待监控的***功能位置加入打点代码;在测试终端中安装加入打点代码的源码文件,以生成操作***,并在测试终端中安装待测应用程序。
8.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的风险代码的定位方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的风险代码的定位方法。
CN202010889811.7A 2020-08-28 2020-08-28 风险代码的定位方法、装置、设备及存储介质 Active CN112035354B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010889811.7A CN112035354B (zh) 2020-08-28 2020-08-28 风险代码的定位方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010889811.7A CN112035354B (zh) 2020-08-28 2020-08-28 风险代码的定位方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112035354A CN112035354A (zh) 2020-12-04
CN112035354B true CN112035354B (zh) 2024-06-28

Family

ID=73587121

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010889811.7A Active CN112035354B (zh) 2020-08-28 2020-08-28 风险代码的定位方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112035354B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190835A (zh) * 2021-02-04 2021-07-30 恒安嘉新(北京)科技股份公司 一种应用程序违法检测方法、装置、设备及存储介质
CN112882902B (zh) * 2021-03-05 2023-02-14 深圳市迅雷网络技术有限公司 线程来源获取方法、电子设备以及计算机可读存储装置
CN113221099A (zh) * 2021-05-06 2021-08-06 支付宝(杭州)信息技术有限公司 针对接口调用请求的处理方法及装置
CN113485686B (zh) * 2021-07-22 2023-10-20 苏州万戈软件科技有限公司 信息***程序的生成方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110427752A (zh) * 2019-08-06 2019-11-08 北京智游网安科技有限公司 一种沙箱监控应用程序的方法、移动终端及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510744B2 (en) * 2009-02-24 2013-08-13 Siemens Product Lifecycle Management Software Inc. Using resource defining attributes to enhance thread scheduling in processors
CN109460307B (zh) * 2018-10-15 2021-03-12 厦门商集网络科技有限责任公司 基于日志埋点的微服务调用跟踪方法及其***
CN110764945B (zh) * 2019-10-23 2023-06-30 北京博睿宏远数据科技股份有限公司 一种崩溃日志处理方法、装置、设备和存储介质
CN111124906B (zh) * 2019-12-17 2022-06-28 蚂蚁财富(上海)金融信息服务有限公司 基于动态埋点的跟踪方法、编译方法、装置和电子设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110427752A (zh) * 2019-08-06 2019-11-08 北京智游网安科技有限公司 一种沙箱监控应用程序的方法、移动终端及存储介质

Also Published As

Publication number Publication date
CN112035354A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN112035354B (zh) 风险代码的定位方法、装置、设备及存储介质
US10684938B2 (en) Code component debugging in an application program
CN108667855B (zh) 网络流量异常监测方法、装置、电子设备及存储介质
Watanabe et al. Understanding the inconsistencies between text descriptions and the use of privacy-sensitive resources of mobile apps
CN113489713B (zh) 网络攻击的检测方法、装置、设备及存储介质
CN111416811A (zh) 越权漏洞检测方法、***、设备及存储介质
CN110943984B (zh) 一种资产安全保护方法及装置
CN110324416B (zh) 下载路径跟踪方法、装置、服务器、终端及介质
CN111654495B (zh) 用于确定流量产生来源的方法、装置、设备及存储介质
CN114398673A (zh) 应用程序的合规检测方法、装置、存储介质与电子设备
CN114253864A (zh) 一种业务测试方法、装置、电子设备及存储介质
US20120054724A1 (en) Incremental static analysis
CN103268448A (zh) 动态检测移动应用的安全性的方法和***
CN110597704A (zh) 应用程序的压力测试方法、装置、服务器和介质
US20170339175A1 (en) Using natural language processing for detection of intended or unexpected application behavior
CN114036526A (zh) 漏洞测试方法、装置、计算机设备和存储介质
CN112632547A (zh) 一种数据处理方法和相关装置
CN116450533A (zh) 用于应用程序的安全检测方法、装置、电子设备和介质
CN115022201B (zh) 一种数据处理功能测试方法、装置、设备及存储介质
US10002253B2 (en) Execution of test inputs with applications in computer security assessment
Mostafa et al. Netdroid: Summarizing network behavior of android apps for network code maintenance
CN112162954B (zh) 用户操作日志生成、路径的定位方法、装置、设备及介质
Watanabe et al. Understanding the inconsistency between behaviors and descriptions of mobile apps
CN117056918A (zh) 一种代码分析方法及相关设备
CN114064510A (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