首页> 中国专利> 动态读入代码分析装置、动态读入代码分析方法以及动态读入代码分析程序

动态读入代码分析装置、动态读入代码分析方法以及动态读入代码分析程序

摘要

动态读入代码分析装置具有存储部、提取部和确定部。存储部存储:动态读入代码信息,其按照经由网络取得的每个动态读入代码,表示动态读入代码的类结构;以及调用方法信息,其是将赋予给使用者信息的标签信息和针对使用者信息执行的代码的类结构对应起来而成的。提取部检测使用者信息向其他装置的发送,根据存储部所存储的调用方法信息,确定与该使用者信息上被赋予的标签信息一致的标签信息,并提取与该标签信息相对应的类结构。确定部从存储部中检索表示该类结构的动态读入代码信息,确定与该动态读入代码信息对应的动态读入代码。

著录项

  • 公开/公告号CN106462704A

    专利类型发明专利

  • 公开/公告日2017-02-22

    原文格式PDF

  • 申请/专利权人 日本电信电话株式会社;

    申请/专利号CN201580027969.0

  • 发明设计人 名云孝昭;秋山满昭;八木毅;

    申请日2015-05-18

  • 分类号G06F21/56;G06F21/62;

  • 代理机构北京三友知识产权代理有限公司;

  • 代理人李辉

  • 地址 日本东京都

  • 入库时间 2023-06-19 01:44:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-21

    授权

    授权

  • 2017-03-22

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20150518

    实质审查的生效

  • 2017-02-22

    公开

    公开

说明书

技术领域

本发明涉及动态读入代码分析装置、动态读入代码分析方法以及动态读入代码分析程序。

背景技术

当前例如,在Android(注册商标)应用程序等面向移动终端的应用程序中,利用蓄积在移动终端中的使用者信息提供了便利性高的服务,使用者信息包含电话本数据、位置信息、通话历史、浏览器的访问历史等。

另一方面,大多情况下,相对于应用程序的安装时的代码(原始代码),还取得在安装后动态地读入的代码(以下称作“动态读入代码”)甚至服务所不需要的使用者信息,并发送到外部。

此外,对于应用程序的分析方法,已知动态方法和静态方法。例如,在动态方法中,关于发送通常的使用者信息的应用程序,对移动终端内的使用者信息赋予被称作污点(taint)标签的标签信息,在网络发送和文件写入时分析标签信息。另一方面,在静态方法中,不使应用程序动作,而分析应用程序自身来分析数据流。

现有技术文献

非专利文献

非专利文献1:Sebastian Poeplau et al.,“Execute This!Analyzing Unsafe and Malicious Dynamic Code Loading in Android Applications”,Proceedings of Annual Network&Distributed System Security Symposium(NDSS),2014.

非专利文献2:“androguard”、[online]、[平成26年5月19日检索]、因特网<https://code.google.com/p/androguard/>

非专利文献3:William Enck et al.,“TaintDroid:An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones”,Proceedings of the 9th USENIX Symposium on Operating Systems Design and Implementation(OSDI),2010.

发明内容

发明所要解决的课题

但是,在上述现有技术中,存在如下问题:无法对大量的应用程序网罗性、且没有误检测地确定造成了使用者信息的发送的动态读入代码。另外,这里所说的“误检测”是指检测在应用程序动作时不会出现的动作。

例如,在静态方法中,由于不使应用程序动作,因此原本就无法获得动态读入代码。此外,在动态方法中,能够通过分析污点标签来检测发送到外部的使用者信息,但无法区别分析原始代码和动态读入代码。因此,在动态方法中,无法确定使用者信息的发送是由于哪种代码而造成的。

公开的技术是鉴于上述情况而完成的,其目的在于,能够对大量的应用程序网罗性、且没有误检测地确定造成了使用者信息的发送的动态读入代码。

用于解决课题的手段

本申请公开的动态读入代码分析装置具有存储部、提取部和确定部。存储部存储:动态读入代码信息,其按照经由网络取得的每个动态读入代码,表示所述动态读入代码的类结构;以及调用方法信息,其是将赋予给使用者信息的标签信息和针对所述使用者信息执行的代码的类结构对应起来而成的。提取部检测使用者信息向其他装置的发送,根据所述存储部所存储的所述调用方法信息,确定与对检测出的所述使用者信息赋予的标签信息一致的标签信息,并提取与确定出的标签信息相对应的类结构。确定部从所述存储部中检索表示提取出的所述类结构的动态读入代码信息,确定与检索出的动态读入代码信息对应的动态读入代码。

发明的效果

根据公开的动态读入代码分析装置、动态读入代码分析方法以及动态读入代码分析程序的一个方式,起到如下效果:能够对大量的应用程序网罗性、且没有误检测地确定造成了使用者信息的发送的动态读入代码。

附图说明

图1是示出第1实施方式的动态读入代码分析系统的结构例的图。

图2是用于说明第1实施方式的动态读入代码分析装置的处理动作的图。

图3是示出第1实施方式的动态读入代码分析装置的结构例的图。

图4是示出第1实施方式的标签信息存储部存储的数据结构的一例的图。

图5是示出第1实施方式的动态读入代码信息存储部存储的数据结构的一例的图。

图6是示出第1实施方式的调用方法信息存储部存储的数据结构的一例的图。

图7是用于说明第1实施方式的标签信息控制部的处理动作的图。

图8是示出第1实施方式的动态读入代码分析装置的处理步骤的流程图。

图9是示出第1实施方式的动态读入代码信息生成部的处理步骤的流程图。

图10是示出第1实施方式的调用方法信息生成部的处理步骤的流程图。

图11是示出第2实施方式的动态读入代码分析装置的结构例的图。

图12是示出执行动态读入代码分析程序的计算机的图。

具体实施方式

以下,根据附图,详细说明动态读入代码分析装置、动态读入代码分析方法和动态读入代码分析程序的实施方式。另外,公开的发明不受本实施方式的限定。

(第1实施方式)

图1是示出第1实施方式的动态读入代码分析系统1的结构例的图。如图1所示,在第1实施方式的动态读入代码分析系统1中,经由LAN(Local Area Network:局域网)等网络2将动态读入代码分析装置10、外部装置3、外部装置4以及便携终端装置5相互连接。另外,动态读入代码分析系统1的结构不限于图1所示的例子。例如,在图1所示的例子中,图示出外部装置是2台、便携终端装置是1台的情况,但外部装置和便携终端装置的数量不限于图1所示的数量。

外部装置3对动态读入代码进行管理。这里所说的“动态读入代码”表示在将应用程序安装到终端之后并入到应用程序的代码。换言之,相对于应用程序的安装时的代码(以下称作“原始代码”),“动态读入代码”是在安装后动态地读入的代码。在这样的动态读入代码中,有时包含附加了如下功能的动态读入代码:超出应用程序隐私政策来发送使用者信息。另外,这里所说的“使用者信息”表示在包含Android(注册商标)的智能手机终端中保存的、能够由他人确定个人的信息和不想被他人知道的信息。例如,在使用者信息中包含住址、电话号码、姓名、签约者ID(Identifier:标识符)、密码、卡编号、位置信息、通话历史等。

此外,外部装置3根据来自便携终端装置5或动态读入代码分析装置10的取得请求,将动态读入代码发布到便携终端装置5或动态读入代码分析装置10。另外,便携终端装置5或动态读入代码分析装置10有意或无意地向外部装置3请求动态读入代码的取得。

外部装置4是收集使用者信息的装置。例如,外部装置4从取得了动态读入代码的便携终端装置5收集使用者信息。

便携终端装置5例如是智能手机或平板终端等。在该便携终端装置5中保存便携终端装置5的使用者的使用者信息。该便携终端装置5对应于使用者的操作,访问发布应用程序的应用程序管理装置(未图示),取得应用程序。

此外,在便携终端装置5取得的应用程序的原始代码例如使用了以广告收入为目的的动态读入代码的情况下,有时超出应用程序隐私政策而将使用者信息发送到例如外部装置4。此外,在读入从网络2取得的代码时,读入的动态读入代码有时动态地变化。因此,即使执行相同的原始代码,应用程序的动作也依赖于动态读入代码而发生变化。在上述情况下,有时超出应用程序隐私政策而将使用者信息发送到例如外部装置4。

因此,第1实施方式的动态读入代码分析装置10针对动态读入代码独立地分析是否进行使用者信息的发送。例如,动态读入代码分析装置10构建沙箱(sandbox)等被保护的区域,并在该被保护的区域内分析动态读入代码,由此使得不对动态读入代码分析装置10的系统产生影响。

图2是用于说明第1实施方式的动态读入代码分析装置10的处理动作的图。在图2所示的例子中,说明如下情况:动态读入代码分析装置10从外部装置3取得的动态读入代码中,确定造成了使用者信息的发送的动态读入代码。

如图2所示,动态读入代码分析装置10向外部装置3请求动态读入代码的取得(步骤S1)。然后,外部装置3将动态读入代码发送到动态读入代码分析装置10(步骤S2)。

此外,动态读入代码分析装置10对所取得的动态读入代码进行分析(步骤S3)。这里,动态读入代码分析装置10将动态读入代码的分析结果作为动态读入代码信息存储到动态读入代码信息存储部中。

此外,动态读入代码分析装置10使所取得的应用程序进行动作,进行分析使用者信息流的动态分析(步骤S4)。例如,动态读入代码分析装置10进行污点分析,作为动态分析。更具体而言,动态读入代码分析装置10在对使用者信息赋予了标签信息后,执行应用程序,每当使用者信息被操作时,进行方法跟踪。动态读入代码分析装置10将方法跟踪的结果作为调用方法信息存储到调用方法信息存储部中。

然后,动态读入代码分析装置10在检测出发送到外部的信息的标签信息后(步骤S5),将动态读入代码信息和调用方法信息进行对照,确定造成了使用者信息的发送的动态读入代码(步骤S6)。

接着,使用图3说明图1所示的动态读入代码分析装置10的结构。图3是示出第1实施方式的动态读入代码分析装置10的结构例的图。如图3所示,动态读入代码分析装置10具有输入部11、输出部12、通信控制部13、控制部14以及存储部15。

输入部11受理来自动态读入代码分析装置10的操作者的各种操作。输出部12例如是液晶显示器等,输出各种信息。通信控制部13控制和与经由网络2连接的其他装置之间交换的各种信息相关的通信。例如,通信控制部13对外部装置3请求动态读入代码的取得,从外部装置3接收动态读入代码。

存储部15例如是RAM(Random Access Memory:随机存取存储器)、闪存(Flash Memory)等半导体存储元件或者硬盘、光盘等存储装置等。例如,如图3所示,存储部15具有标签信息存储部15a、动态读入代码信息存储部15b、调用方法信息存储部15c和使用者信息存储部15d。

使用者信息存储部15d存储使用者信息。这里,使用者信息表示在包含Android(注册商标)的智能手机终端中保存的、能够由他人确定个人的信息和不想被他人知道的信息。在使用者信息中例如包含住址、电话号码、姓名、签约者ID、密码、卡编号、位置信息、通话历史等。此外,在使用者信息中,也可以包含使用者终端的识别编号、SIM(Subscriber Identity Module:用户身份模块)识别编号、OS(Operating System:操作系统)生成识别编号、照相机图像、SMS(Short Message Service:短消息服务)信息、书签信息等。另外,动态读入代码分析装置10存储的使用者信息可以不是实际存在的使用者信息而是虚拟数据。

标签信息存储部15a存储标签信息,标签信息表示赋予给想追踪的信息的污点标签。图4是示出第1实施方式的标签信息存储部15a存储的数据结构的一例的图。例如图4所示,标签信息存储部15a存储将“污点标签ID”、“污点源”、“地址”以及“使用者信息判定信息”对应起来而成的信息。

这里,标签信息存储部15a存储的“污点标签ID”表示污点标签的标识符。例如,在“污点标签ID”中保存“标签A”、“标签B”等。此外,标签信息存储部15a存储的“污点源”表示赋予污点的对象。换言之,污点源是想追踪的信息,包含使用者信息。例如,在“污点源”中保存“XX”、“YY”、“ABC”等。另外这里,假设“XX”和“YY”是使用者信息,“ABC”是使用者信息以外的信息。

此外,标签信息存储部15a存储的“地址”表示在存储区域中保存污点源的存储位置。例如,在“地址”中保存“1000-1100”、“2000-2100”等。另外,“地址”所保存的值对应于保存污点源的存储位置的变更而被更新。此外,标签信息存储部15a存储的“使用者信息判定信息”表示污点源是否是使用者信息。例如,在“使用者信息判定信息”中,保存了表示污点源是使用者信息的“1”、表示污点源不是使用者信息的“0”等。

列举一例,图4所示的标签信息存储部15a示出赋予给作为使用者信息的污点源“XX”的污点标签是“标签A”、且污点源“XX”被保存于地址“1000-1100”。此外,图4所示的标签信息存储部15a示出赋予给作为使用者信息的污点源“YY”的污点标签是“标签B”、且污点源“YY”被保存于地址“2000-2100”。此外,图4所示的标签信息存储部15a示出赋予给不是使用者信息的污点源“ABC”的污点标签是“标签C”、且污点源“ABC”被保存于地址“3000-3100”。

动态读入代码信息存储部15b按照经由网络取得的每个动态读入代码,存储表示所述动态读入代码的类(class)结构的动态读入代码信息。图5是示出第1实施方式的动态读入代码信息存储部15b存储的数据结构的一例的图。例如图5所示,动态读入代码信息存储部15b存储将“动态读入代码ID”、“包(package)名”以及“类名”对应起来而成的信息。另外,将动态读入代码信息存储部15b存储的“包名”和“类名”也称作“分析信息”。

这里,动态读入代码信息存储部15b存储的“动态读入代码ID”表示动态读入代码的标识符。例如,在“动态读入代码ID”中保存“1”、“2”等。

此外,动态读入代码信息存储部15b存储的“包名”表示作为动态读入代码的类结构的包名。例如,在“包名”中,保存“com.twxxxxx.android”、“com.xxxxle.android.apps.A”等。

此外,动态读入代码信息存储部15b存储的“类名”表示作为动态读入代码的类结构的类名。例如,在“类名”中保存“类C”、“类A”等。

列举一例,图5所示的动态读入代码信息存储部15b表示动态读入代码ID为“1”的动态读入代码的类结构是“com.twxxxxx.android”和“类C”。此外,图5所示的动态读入代码信息存储部15b表示动态读入代码ID为“2”的动态读入代码的类结构是“com.xxxxle.android.apps.A”和“类A”。

调用方法信息存储部15c存储调用方法信息,调用方法信息是将赋予给使用者信息的标签信息和针对所述使用者信息执行的代码的类结构对应起来而成的。图6是示出第1实施方式的调用方法信息存储部15c存储的数据结构的一例的图。例如图6所示,调用方法信息存储部15c存储将“污点标签ID”、“包名”以及“类名”对应起来而成的信息。另外,将调用方法信息存储部15c存储的“包名”和“类名”也称作“跟踪信息”。

这里,调用方法信息存储部15c存储的“污点标签ID”表示污点标签的标识符。例如,在“污点标签ID”中保存“标签A”、“标签B”等。

此外,调用方法信息存储部15c存储的“包名”表示在传播污点标签的情况下执行的代码的、作为类结构的包名。例如,在“包名”中,保存“com.yyyyy”、“com.xxxxle.android.apps.A”等。

此外,调用方法信息存储部15c存储的“类名”表示在传播污点标签的情况下执行的代码的、作为类结构的类名。例如,在“类名”中保存“类B”、“类A”等。

列举一例,图6所示的调用方法信息存储部15c示出在传播污点标签ID为“标签A”的污点标签的情况下执行的代码的类结构是“com.yyyyy”和“类B”。此外,图6所示的调用方法信息存储部15c示出在传播污点标签ID为“标签B”的污点标签的情况下执行的代码的类结构是“com.xxxxle.android.apps.A”和“类A”。

返回图3。控制部14是CPU(Central Processing Unit:中央处理单元)、MPU(Micro Processing Unit:微处理单元)等电子电路或者ASIC(Application Specific Integrated Circuit:面向特定用途的集成电路)或FPGA(Field Programmable Gate Array:现场可编程门阵列)等集成电路。该控制部14具有动态读入代码信息生成部14a、调用方法信息生成部14b、提取部14c、确定部14d和标签信息控制部14e。

标签信息控制部14e进行污点分析,作为动态分析。图7是用于说明第1实施方式的标签信息控制部14e的处理动作的图。如图7所示,标签信息控制部14e对作为使用者信息的信息XX赋予标签A作为污点源,对作为使用者信息的信息YY赋予标签B作为污点源,并分别保存到CPU内的寄存器中。然后,在通过执行了应用程序而将信息XX和信息YY相加而成为信息ZZ的情况下,标签信息控制部14e还按照传播规则处理属性A和属性B。即,标签信息控制部14e将属性A和属性B相加,从而信息ZZ的标签信息成为“属性A、属性B”。这样,标签信息控制部14e在执行了针对使用者信息的运算处理的情况下,传播污点标签。

另外,后述的提取部14c检测信息ZZ已被网络发送的情况。在上述情况下,提取部14c分析信息ZZ的标签信息“属性A、属性B”,判定所发送的信息是否是使用者信息。

动态读入代码信息生成部14a生成动态读入代码信息。例如,动态读入代码信息生成部14a用DexClassLoader等监视使用动态读入代码的类,在使用了该类的情况下,检测动态读入代码。

接着,动态读入代码信息生成部14a对经由网络而取得的动态读入代码进行分析,生成动态读入代码信息,并保存到存储部15中。这里,动态读入代码与内部代码同样是DEX(Dalvik EXecutable:Dalvik可执行)文件形式,因此动态读入代码信息生成部14a通过DEX文件的逆向工程分析,确定“包名”和“类名”。

并且,动态读入代码信息生成部14a生成动态读入代码信息,并保存到动态读入信息存储部15b中,动态读入代码信息是将确定出的“包名”和“类名”与检测出的动态读入代码的“动态读入代码ID”对应起来而成的。

在针对使用者信息执行了运算处理的情况下,调用方法信息生成部14b分析运算处理执行的代码,生成调用方法信息,并将所生成的调用方法信息保存到存储部15中。例如,在通过标签信息控制部14e执行了针对使用者信息的运算处理的情况下,调用方法信息生成部14b进行方法跟踪。换言之,调用方法信息生成部14b将污点分析作为触发而输出调用方法。

并且,调用方法信息生成部14b生成将所输出的调用方法中的至少“包名”和“类名”与已执行运算处理的污点标签的“污点标签ID”对应起来而成的调用方法信息,并保存到调用方法信息存储部15c中。

提取部14c检测使用者信息向其他装置的发送,根据存储部15所存储的调用方法信息,确定与针对检测出的使用者信息赋予的标签信息一致的标签信息,并提取与确定出的标签信息相对应的类结构。另外,之后使用图8叙述提取部14c的详细的处理。

确定部14d从存储部15中检索表示由提取部14c提取出的类结构的动态读入代码信息,并确定与检索出的动态读入代码信息对应的动态读入代码。例如,确定部14d以检测出使用者信息的发送为契机,从存储部15中检索表示提取出的类结构的动态读入代码信息,并确定与检索出的动态读入代码信息对应的动态读入代码。更具体而言,确定部14d从动态读入代码信息存储部15b中,确定包含与针对使用者信息执行的代码的包名和类名一致的包名和类名的动态读入代码。另外,之后使用图8叙述确定部14d的详细的处理。

接着,使用图8说明由第1实施方式的动态读入代码分析装置10进行的对照处理。图8是示出第1实施方式的动态读入代码分析装置10的处理步骤的流程图。

如图8所示,动态读入代码分析装置10的提取部14c判定是否检测出了信息的发送(步骤S101)。例如,在调用了网络通信的API的情况下,提取部14c判定为检测出了信息的发送。另外,提取部14c在判定为未检测出信息的发送的情况下(步骤S101、否),反复判定是否检测出了信息的发送。

这里,提取部14c在判定为检测出了信息的发送的情况下(步骤S101、是),分析作为发送对象的信息的污点(步骤S102)。例如,提取部14c读出作为发送对象的信息上赋予的污点标签。并且,提取部14c从标签信息存储部15a中确定与所读出的污点标签一致的污点标签,读出与确定出的污点标签相对应的“使用者信息判定信息”所保存的值。

接着,提取部14c判定信息是否是使用者信息(步骤S103)。例如,提取部14c参照标签信息存储部15a的“使用者信息判定信息”,在保存的值为“1”的情况下,判定为作为发送对象的信息是使用者信息,在保存的值为“0”的情况下,判定为作为发送对象的信息不是使用者信息。另外,在未对作为发送对象的信息赋予污点标签的情况下,提取部14c判定为作为发送对象的信息不是使用者信息。另外,提取部14c在判定为作为发送对象的信息不是使用者信息的情况下(步骤S103、否),结束处理。

这里,提取部14c在判定为作为发送对象的信息是使用者信息的情况下(步骤S103、是),读出与污点标签对应的跟踪信息(步骤S104)。例如,提取部14c从调用方法信息存储部15c中确定与所读出的污点标签一致的污点标签,读出与确定出的污点标签相对应的“包名”和“类名”所保存的值。例如,在赋予给使用者信息的污点标签是图6所示的“标签B”的情况下,提取部14c提取“com.xxxxle.android.apps.A”和“类A”,作为跟踪信息。此外,在赋予给使用者信息的污点标签是图6所示的“标签A”的情况下,提取部14c提取“com.yyyyy”和“类B”,作为跟踪信息。

然后,确定部14d判定是否存在动态读入代码信息(步骤S105)。例如,确定部14d检索动态读入信息存储部15b,判定是否存在动态读入信息。这里,确定部14d在判定为不存在动态读入代码信息的情况下(步骤S105、否),判定为未发生基于动态读入代码的使用者信息的发送,并结束处理。

另一方面,确定部14d在判定为存在动态读入代码信息的情况下(步骤S105、是),判定是否存在与跟踪信息一致的动态读入代码信息(步骤S106)。例如,说明赋予给使用者信息的污点标签是图6所示的“标签B”的情况。在上述情况下,确定部14d从动态读入代码信息存储部15b中检索与“com.xxxxle.android.apps.A”和“classA”一致的动态读入代码信息,作为跟踪信息,确定动态读入代码ID为“2”的动态读入代码。另一方面,说明赋予给使用者信息的污点标签是图6所示的“标签A”的情况。在上述情况下,确定部14d从动态读入代码信息存储部15b中检索与“com.yyyyy”和“类B”一致的动态读入代码信息,作为跟踪信息,但判定为不存在一致的动态读入代码。

并且,确定部14d在判定为存在与跟踪信息一致的动态读入代码信息的情况下(步骤S106、是),将一致的动态读入代码信息确定为造成了使用者信息的发送的动态读入代码(步骤S107)。另外,确定部14d在判定为不存在与跟踪信息一致的动态读入代码信息的情况下(步骤S106、否),结束处理。

接着,使用图9说明由第1实施方式的动态读入代码信息生成部14a进行的动态读入代码信息生成处理。图9是示出第1实施方式的动态读入代码信息生成部14a的处理步骤的流程图。

如图9所示,动态读入代码信息生成部14a判定是否检测出了动态读入代码(步骤S201)。例如,动态读入代码信息生成部14a在通过DexClassLoader等而使用了采用动态读入代码的类的情况下,检测动态读入代码。这里,动态读入代码信息生成部14a在判定为未检测出动态读入代码情况下(步骤S201、否),反复判定是否检测出动态读入代码。

另一方面,动态读入代码信息生成部14a在判定为检测出了动态读入代码的情况下(步骤S201、是),对检测出的动态读入代码进行分析(步骤S202)。然后,动态读入代码信息生成部14a通过DEX文件的逆向工程分析,确定“包名”和“类名”(步骤S203)。

接着,动态读入代码信息生成部14a生成动态读入代码信息,并保存到动态读入信息存储部15b中,动态读入代码信息是对检测出的动态读入代码赋予“动态读入代码ID”,并将确定的“包名”和“类名”与所赋予的“动态读入代码ID”对应起来而成的(步骤S204)。

接着,使用图10说明由第1实施方式的调用方法信息生成部14b进行的调用方法信息生成处理。图10是示出第1实施方式的调用方法信息生成部14b的处理步骤的流程图。

如图10所示,调用方法信息生成部14b判定是否检测出了使用者信息的运算处理(步骤S301)。这里,调用方法信息生成部14b在判定为未检测出使用者信息的运算处理的情况下(步骤S301、否),反复判定是否检测出了使用者信息的运算处理。

另一方面,调用方法信息生成部14b在判定为检测出了使用者信息的运算处理的情况下(步骤S301、是),输出调用方法(步骤S302)。然后,调用方法信息生成部14b取得所输出的调用方法中的至少“包名”和“类名”(步骤S303)。

接着,调用方法信息生成部14b生成将所取得的“包名”和“类名”与执行了运算处理的污点标签的“污点标签ID”对应起来而成的调用方法信息,并保存到调用方法信息存储部15c中(步骤S304)。

如上所述,第1实施方式的动态读入代码分析装置10通过分析赋予给使用者信息的污点标签,确定发送了使用者信息的代码的类结构。并且,第1实施方式的动态读入代码分析装置10根据该代码的类结构,确定造成了使用者信息的发送的动态读入代码。这里,第1实施方式的动态读入代码分析装置10以检测出使用者信息的发送为契机,确定动态读入代码。由此,第1实施方式的动态读入代码分析装置10能够确定造成了使用者信息的发送的动态读入代码。

此外,第1实施方式的动态读入代码分析装置10确定包含与针对使用者信息执行的代码的包名和类名一致的包名和类名的动态读入代码。由此,第1实施方式的动态读入代码分析装置10能够对大量的应用程序网罗性、且没有误检测地确定造成了使用者信息的发送的动态读入代码。

另外,在上述第1实施方式中,说明了提取部14c参照标签信息存储部15a存储的使用者信息判定信息,判定作为发送对象的信息是否是使用者信息的实施方式,但实施方式不限于此。例如,在仅对使用者信息赋予污点标签的情况下,提取部14c可以不判定作为发送对象的信息是否是使用者信息。

(第2实施方式)

在第1实施方式中,说明了确定部14d以检测出使用者信息的发送为契机,确定与提取出的跟踪信息对应的动态读入代码的实施方式,但实施方式不限于此。例如,确定部14d也可以使用按照规定的间隔提取出的跟踪信息来确定动态读入代码。因此,在第2实施方式中,说明如下情况:将通过提取部14c提取出的跟踪信息保存到存储部15中,确定部14d按照规定的间隔读出跟踪信息来确定动态读入代码。

图11是示出第2实施方式的动态读入代码分析装置100的结构例的图。另外,在图11中,对与图3中示出的第1实施方式的动态读入代码分析装置10相同的结构赋予相同的标号并省略详细的说明。

如图11所示,动态读入代码分析装置100具有输入部11、输出部12、通信控制部13、控制部140以及存储部150。存储部150例如是RAM、闪存(Flash Memory)等半导体存储元件或者硬盘、光盘等存储装置等。

例如,如图11所示,存储部150具有标签信息存储部15a、动态读入代码信息存储部15b、调用方法信息存储部15c、使用者信息存储部15d和跟踪信息存储部15e。跟踪信息存储部15e存储由提取部14c提取出的跟踪信息。

控制部140是CPU或MPU等电子电路、或者ASIC或FPGA等集成电路。该控制部140具有动态读入代码信息生成部14a、调用方法信息生成部14b、提取部14c、确定部14d、标签信息控制部14e和保存控制部14f。

保存控制部14f将由提取部14c提取出的跟踪信息保存到跟踪信息存储部15e中。换言之,保存控制部14f将由提取部14c提取出的类结构保存到跟踪信息存储部15e中。并且,第2实施方式的确定部14d按照规定的间隔从跟踪信息存储部15e中读出跟踪信息,确定与所读出的跟踪信息对应的分析信息,从而确定与分析信息相对应的动态读入代码。换言之,第2实施方式的确定部14d按照规定的间隔读出从跟踪信息存储部15e提取出的类结构,从存储部15中检索表示读出的提取出的类结构的动态读入代码信息,确定与检索出的动态读入代码信息对应的动态读入代码。

这样,第2实施方式的动态读入代码分析装置100通过分析赋予给使用者信息的污点标签,确定发送了使用者信息的代码的类结构。并且,第2实施方式的动态读入代码分析装置100根据该代码类结构,确定造成了使用者信息的发送的动态读入代码。这里,第2实施方式的动态读入代码分析装置100按照规定的间隔从跟踪信息存储部15e中读出跟踪信息,确定与所读出的跟踪信息对应的分析信息,从而确定与分析信息相对应的动态读入代码。由此,第2实施方式的动态读入代码分析装置100能够对大量的应用程序网罗性、且没有误检测地确定造成了使用者信息的发送的动态读入代码。

(系统结构等)

此外,图示的各装置的各结构要素是功能概念性的,在物理上不一定需要如图所示那样构成。即,各装置的分散/合并的具体方式不限于图示的情况,能够根据各种负荷和使用状况等,以任意的单位在功能或物理上分散/合并构成其全部或一部分。例如,可以将调用方法信息生成部14b和标签信息控制部14e合并。并且,在各装置中进行的各处理功能的全部或任意的一部分可以通过CPU和由该CPU分析执行的程序来实现,或者作为基于有线逻辑的硬件来实现。

此外,在本实施例中说明的各处理中的、作为自动地进行的处理而说明的处理的全部或一部分还能够手动地进行,或者作为手动地进行的处理而说明的处理的全部或一部分还能够通过公知的方法自动地进行。另外,关于在上述文档中和附图中示出的包含处理步骤、控制步骤、具体的名称、各种数据和参数的信息,除了特殊记载的情况以外,都能够任意地变更。

(程序)

此外,还能够生成如下程序,上述程序用计算机可执行的语言记述了在上述第1实施方式中说明的动态读入代码分析装置10执行的处理。例如,还能够生成动态读入代码分析程序,动态读入代码分析程序用计算机可执行的语言记述了第1实施方式的动态读入代码分析装置10执行的处理。该情况下,通过由计算机执行动态读入代码分析程序,能够得到与上述第1实施方式相同的效果。并且,通过将上述动态读入代码分析程序记录到计算机可读取的记录介质中,使计算机读入该记录介质所记录的动态读入代码分析程序并执行,也可以实现与上述第1实施方式相同的处理。以下,说明执行动态读入代码分析程序的计算机的一例,该动态读入代码分析程序用于实现与图3中示出的动态读入代码分析装置10相同的功能。

图12是示出执行动态读入代码分析程序的计算机1000的图。如图12中例示那样,计算机1000例如具有存储器1010、CPU 1020、硬盘驱动器接口1030、盘驱动器接口1040、串行端口接口1050、视频适配器1060和网络接口1070,这各个部件通过总线1080连接。

如图12中例示那样,存储器1010包含ROM(Read Only Memory:只读存储器)1011和RAM 1012。ROM 1011例如是BIOS(Basic Input Output System:基本输入输出系统)等引导程序。如图12中例示那样,硬盘驱动器接口1030与硬盘驱动器1031连接。如图12中例示那样,盘驱动器接口1040与盘驱动器1041连接。例如磁盘或光盘等可插拔的存储介质被插入到盘驱动器1041。如图12中例示那样,串行端口接口1050与例如鼠标1051、键盘1052连接。如图12中例示那样,视频适配器与例如显示器1061连接。

这里,如图12中例示那样,硬盘驱动器1031例如存储OS 1091、应用程序程序1092、程序模块1093、程序数据1094。即,上述动态读入代码分析程序作为记述有由计算机1000执行的指令的程序模块被存储到例如硬盘驱动器1031中。具体而言,记述有如下步骤的程序模块被存储到硬盘驱动器1031中:提取步骤,执行与在上述实施方式中说明的提取部14c相同的信息处理;以及确定步骤,执行与确定部14d相同的信息处理。

此外,在上述第1实施方式中说明的各种数据作为程序数据被存储到例如存储器1010或硬盘驱动器1031中。并且,CPU 1020根据需要将存储器1010或硬盘驱动器1031所存储的程序模块1093或程序数据1094读出到RAM 1012中,并执行各种处理步骤。

另外,动态读入代码分析程序的程序模块1093或程序数据1094不限于被存储到硬盘驱动器1031中的情况,也可以被存储到例如可插拔的存储介质中,并被CPU 1020经由盘驱动器等读出。或者,动态读入代码分析程序的程序模块1093或程序数据1094可以被存储到经由网络(LAN(Local Area Network:局域网)、WAN(Wide Area Network:广域网)等)而连接的其他计算机中,并被CPU 1020经由网络接口1070读出。

标号说明

10、100:动态读入代码分析装置

11:输入部

12:输出部

13:通信控制部

14、140:控制部

14a:动态读入代码信息生成部

14b:调用方法信息生成部

14c:提取部

14d:确定部

14e:标签信息控制部

14f:保存控制部

15、150:存储部

15a:标签信息存储部

15b:动态读入代码信息存储部

15c:调用方法信息存储部

15d:使用者信息存储部

15e:跟踪信息存储部

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号