一种Java代码中数据流的跟踪装置和方法

文档序号:9910793阅读:470来源:国知局
一种Java代码中数据流的跟踪装置和方法
【技术领域】
[0001] 本发明涉及计算机网络领域,特别是涉及一种Java代码中数据流的跟踪装置和方 法。
【背景技术】
[0002] 目前信息技术已进入移动智能互联网时代,智能移动终端由于其便携性、成本低 等优点日益成为用户进行各类网络活动的主要终端形态。相比传统移动终端,智能移动终 端拥有更高性能的处理器、更高的移动网络数据传输能力以及开放的第三方移动终端操作 系统,因此借助智能移动终端可以开展大量业务应用,处理更多的个人隐私数据,如通话与 短信信息,地理位置,社交网络账户,银行帐号,个人密码,照片视频等等。同时,这些个人隐 私数据也吸引了众多不法攻击者的注意力,导致恶意软件增长速度惊人。因此,怎么通过对 用户的访问数据进行跟踪以保证隐私数据的安全,是广大厂商迫切需要解决的问题。
[0003] 数据流跟踪技术是一种在信息安全领域被广泛使用的安全技术。采用字节级的污 点标记对低级的机器状态(CPU寄存器、物理内存、磁盘块等等)进行标记,同时拦截和分析 系统指令流,分析出指令流对污点标记的影响从而更新和维护污点标记。为了获得数据流 跟踪所需的细粒度分析能力,污点跟踪系统需要采用模拟器,例如快速仿真器(Quick EMUlator,QEMU)运行目标应用程序。该跟踪系统在实现时都是在中间指令级进行修改,对 于一条x86指令,原本只需要进行一次污点更新操作,基于中间指令实现,将会产生对应的 多次污点传播更新操作,而其中大部分操作都是对QEMU内部变量进行的跟踪更新,是无用 的操作,导致性能开销比较大。

【发明内容】

[0004] 本发明主要解决的技术问题是提供一种Java代码中数据流的跟踪装置和方法,能 够减少数据流跟踪的性能开销。
[0005] 为解决上述技术问题,本发明采用的一个技术方案是:提供一种Java代码中数据 流的跟踪装置,该装置包括确定模块,用于JAVA执行环境在加载JAVA字节码时,确定待跟踪 的字节码;指令插入模块,用于在所述字节码中插入数据标识传播指令,所述数据标识传播 指令用于对所述待跟踪的字节码做标识,并对所述标识过的字节码进行跟踪;跟踪模块,用 于根据所述数据标识传播指令对所述待跟踪的字节码进行标识和跟踪。
[0006] 为解决上述技术问题,本发明采用的一个技术方案是:提供一种Java代码中数据 流的跟踪方法,该方法包括:JAVA执行环境在加载JAVA字节码时,确定待跟踪的字节码;在 所述字节码中插入数据标识传播指令,所述数据标识传播指令用于对所述待跟踪的字节码 做标识、并对所述标识过的字节码进行跟踪;根据所述数据标识传播指令对所述待跟踪的 字节码进行标识和跟踪。
[0007] 区别于现有技术,本发明的Java代码中数据流的跟踪装置,用于JAVA执行环境在 加载JAVA字节码时,确定待跟踪的字节码;在所述字节码中插入数据标识传播指令,所述数 据标识传播指令用于对所述待跟踪的字节码做标识、并对所述标识过的字节码进行跟踪; 根据所述数据标识传播指令对所述待跟踪的字节码进行标识和跟踪;从而能够以更小的开 销实现数据流的跟踪。
【附图说明】
[0008] 图1是本发明Java代码中数据流的跟踪装置的第一实施方式的结构示意图;
[0009] 图2是本发明Java代码中数据流的跟踪装置的第二实施方式的结构示意图;
[0010] 图3是本发明Java代码中数据流的跟踪方法的第一实施方式的流程示意图。
【具体实施方式】
[0011]下面结合【具体实施方式】对本发明的技术方案作进一步更详细的描述。显然,所描 述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于 本发明保护的范围。
[0012] 参阅图1,图1是本发明提供的Java代码中数据流的跟踪装置的第一实施方式的结 构示意图。
[0013] 该Java代码中数据流的跟踪装置100包括:确定模块110,标识模块120,跟踪模块 130〇
[0014]其中,确定模块110,用于JAVA执行环境在加载JAVA字节码时,确定待跟踪的字节 码。
[0015] 具体的,基于安卓系统的智能终端在运行JAVA应用程序时,终端上的JAVA执行环 境,具体的,例如dalvik虚拟机首先需要将JAVA程序翻译成字节码,该字节码是中间代码, 然后依次加载字节码,此时确定存在用于实现未授权行为的字节码,例如,没有授权时对用 户名与密码做缓存,上传用户联系人信息,删除本地存储器上的图片等操作,这些未授权行 为都属于危险操作、需要进行监控和分析。
[0016] 指令插入模块120,用于在所述字节码中插入数据标识传播指令,所述数据标识传 播指令用于对所述待跟踪的字节码做标识、并对所述标识过的字节码进行跟踪。
[0017] 具体的,JAVA执行环境在字节码中加入标识控制代码和传播控制代码,以便标书 所述待跟踪的字节码,然后跟踪所述标识过的字节码。
[0018] 针对不同的业务和不同的操作行为,将加入不同的标识控制代码和传播控制代 码。
[0019] 跟踪模块130,用于根据所述数据标识传播指令对所述待跟踪的字节码进行标识 和跟踪。
[0020] 具体的,根据标识控制代码对待跟踪的字节码进行标识,记录其对应的操作;根据 传播控制代码对标识过的字节码进行跟踪。
[0021] 可选的,对于跟踪过的字节码,可以将字节码对应的操作展示给用户,以便警告或 者提醒用户。
[0022]本发明修改了 JAVA虚拟机执行环境的实现源码,在对JAVA代码进行解释执行时, 插入用于标识和跟踪字节码的相关控制代码,即从JAVA层面实现数据流的跟踪,避免了从 机器底层的系统指令流做污点标记和更新,从而避免了对大量中间指令的跟踪,减少了跟 踪开销,提尚了跟踪效率。
[0023] 区别于现有技术,本发明的Java代码中数据流的跟踪装置,用于JAVA执行环境在 加载JAVA字节码时,确定待跟踪的字节码;在所述字节码中插入数据标识传播指令,所述数 据标识传播指令用于对所述待跟踪的字节码做标识、并对所述标识过的字节码进行跟踪; 根据所述数据标识传播指令对所述待跟踪的字节码进行标识和跟踪;从而能够以更小的开 销实现数据流的跟踪。
[0024] 参阅图2,图2是本发明提供的Java代码中数据流的跟踪装置的第二实施方式的结 构示意图。
[0025] 该Java代码中数据流的跟踪装置200包括:确定模块210,指令插入模块220,跟踪 模块230。
[0026]其中,确定模块210包括未授权字节码确定单元211,用于JAVA执行环境在加载 JAVA字节码时,确定用于实现未授权行为的字节码。
[0027]具体的,基于安卓系统的智能终端在运行JAVA应用程序时,终端上的JAVA执行环 境,具体的,例如dalvik虚拟机首先需要将JAVA程序翻译成字节码,该字节码是中间代码, 然后依次加载字节码。未授权字节码确定单元211在JAVA执行环境加载字节码时,发现实现 未授权行为的字节码、即待跟踪的字节码,例如,没有授权就对用户名与密码做缓存,上传 用户联系人信息,删除本地存储器上的图片等操作,这些未授权行为都属于危险操作、需要 进行监控和分析。
[0028] 指令插入模块220,包括第一代码插入单元221和第二代码插入单元222。
[0029] 其中,第一代码插入单元221,用于在所述字节码中插入标识控制代码,所述标识 控制代码用于标识所述待跟踪的字节码,具体的,用于记录所述待跟踪的字节码对应的操 作。
[0030] 例如,下表1给出了一些用于标识字节码的控制代码例子,其中,第一列是标识控 制代码的伪代码,第二列是该代码执行的操作,第三列是对该代码的含义描述。
[0031] 表1标识控制代码列表
[0032]
[0033] 例如,通过控制代码"move-op-E a",能够将异常操作对应的字节码传递给参数a。
[0034] 例如,通过控制代码"binary-op a b c",将参数c设置为高位为1低位为0的值,或 者高位为〇低位为1的值,能够将异常操作中使用的数据的高位或者低位传递给参数a。
[0035] 其中,第二代码插入单元222,用于在所述字节码中插入传播控制代码,所述传播 控制代码用于跟踪所述标识过的字节码。
[0036]例如,下表2给出了一些用于跟踪字节码的传播控制代码例子,其中,第一列是传 播控制代码的伪代码,第二列是该代码执行的操作,第三列是对该代码的含义描述。
[0037] 表2传播控制代码列表
[0038]
L0039」例如,通过控制代码"const-op a C",对变量a原先所携带的敏感数据被清除,即 其携带的字节码信息进行清除。
[0040] 例如,通过控制代码"return-op a",将a携带的字节码信息通过返回值传递给系 统。
[0041 ]跟踪模块230,用于根据标识控制代码对待跟踪的字节码进行标识,以及根据传播 控制代码对标识过的字节码进行跟踪。
[0042]可选的,该Java代码中数据流的跟踪装置进一步还包含规则定义模块240,用于预 先定义标识插入规则和标识传播规则;指令插入模块220还包括标识规则读取单元223,用 于读取预先定义的标识插入规则,以便第一代码插入单元221根据所述预先定义的标识插 入规则,在所述字节码中插入标识控制代码;指令插入模块220还包括跟踪规则读取单元 224,用于读取预先定义的标识传播规则,以便第二代码插入单元222根据所述预先定义的 标识传播规则,在所述字节码中插入传播控制代码。
[0043]具体的,针对不同的业务和
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1