一种信息处理方法及服务器、计算机存储介质技术

技术编号:19542709 阅读:28 留言:0更新日期:2018-11-24 20:26
本发明专利技术公开了一种信息处理方法、服务器及计算机存储介质,其中,所述方法包括:以静态方式逆向遍历二进制文件中的函数代码;解析所述函数代码,获取所述函数代码中全局的函数拓扑关系;以动态方式获取所述函数代码运行时函数被调用的实际地址;根据所述函数被调用的实际地址得到局部的函数拓扑关系;根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链。

An Information Processing Method and Server and Computer Storage Media

The invention discloses an information processing method, a server and a computer storage medium, in which the method comprises: traversing function codes in binary files in a static manner; parsing the function codes to obtain global function topological relations in the function codes; and dynamically obtaining the function codes. The actual address of the function being invoked at run time; the local function topological relationship is obtained according to the actual address of the function being invoked; and the missing data in the global function topological relationship is filled up according to the local function topological relationship, and the function calling relationship chain is obtained.

【技术实现步骤摘要】
一种信息处理方法及服务器、计算机存储介质
本专利技术涉及通信技术,尤其涉及一种信息处理方法及服务器、计算机存储介质。
技术介绍
用户使用的各种应用、各种互联网服务、各种生活服务等等,都可以通过计算机编程实现。在编程中有时会把多个函数串在一起依次调用,以达到特定的目的,在这里,把这样的调用方式形象地称为函数链调用。函数链中的函数有些是独立的,有些则只用在函数组合中,不会单独调用。对象的连续配置和组合是函数链调用比较常用场合,编程的编译过程中需要有相应的汇编类库供调用。现有函数调用关系链的获取方式,是通过doxygen工具来实现。这种方式是静态解析源代码,通过解析代码的调用以生成函数调用关系链,即:通过解析源代码的方式获取该函数调用关系链。采用上述函数调用关系链的获取方式,所存在的问题是:采用静态解析源代码的方式在对动态语言进行分析过程中,函数调用关系链会有缺失的现象,因为,需要在动态实际运行过程中才能够确定实际的函数地址。然而,相关技术中,对于该问题,尚无有效解决方案。
技术实现思路
有鉴于此,本专利技术实施例提供了一种信息处理方法及服务器、计算机存储介质,至少解决了现有技术存在的问题。本专利技术实施例提供一种信息处理方法,所述方法包括:以静态方式逆向遍历二进制文件中的函数代码;解析所述函数代码,获取所述函数代码中全局的函数拓扑关系;以动态方式获取所述函数代码运行时函数被调用的实际地址;根据所述函数被调用的实际地址得到局部的函数拓扑关系;根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链。上述方案中,所述解析所述函数代码,获取所述函数代码中全局的函数拓扑关系,包括:在静态解析模式下解析所述函数代码,得到所述函数代码中的所有指令;从所述函数代码中的所有指令中,识别出函数地址调用指令;根据所述函数地址调用指令所指示的位置,从所述函数代码中提取出第一函数调用关系链,所述第一函数调用关系链用于表征所述全局的函数拓扑关系。上述方案中,所述以动态方式获取所述函数代码运行时函数被调用的实际地址,包括:从所述静态解析模式切换到动态解析模式,解析所述函数代码中包含的函数虚地址,得到与所述函数虚地址对应的函数被调用的实际地址。上述方案中,所述解析所述函数代码中包含的函数虚地址,得到与所述函数虚地址对应的函数被调用的实际地址,包括:从所述函数代码中确定出需要动态获取函数调用关系链的待测试进程,所述待测试进程中包含函数虚地址;在所述待测试进程运行前,对所述待测试进程下断点,运行到所述断点时,得到运行的特征数据,根据所述特征数据得到所述函数被调用的实际地址。上述方案中,所述解析所述函数代码中包含的函数虚地址,得到与所述函数虚地址对应的函数被调用的实际地址,包括:从所述函数代码中确定出需要动态获取函数调用关系链的待测试进程,所述待测试进程中包含函数虚地址;挂起所述待测试进程;对所述待测试进程中所述函数地址调用指令的所在位置下断点;运行所述待测试进程,若命中所述断点,则触发对所述函数被调用的实际地址的提取处理,提取出所述函数被调用的实际地址。上述方案中,所述方法还包括:根据所述函数被调用的实际地址得到第二函数调用关系链,所述第一函数调用关系链用于表征所述局部的函数拓扑关系;所述根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链,还包括:根据所述第一函数调用关系链和所述第二函数调用关系链得到所述函数调用关系链。本专利技术实施例还提供一种服务器,所述服务器包括:遍历单元,用于以静态方式逆向遍历二进制文件中的函数代码;第一解析单元,用于解析所述函数代码,获取所述函数代码中全局的函数拓扑关系;第二解析单元,用于以动态方式获取所述函数代码运行时函数被调用的实际地址;第一处理单元,用于根据所述函数被调用的实际地址得到局部的函数拓扑关系;第二处理单元,用于根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链。上述方案中,所述第一解析单元,进一步用于:在静态解析模式下解析所述函数代码,得到所述函数代码中的所有指令;从所述函数代码中的所有指令中,识别出函数地址调用指令;根据所述函数地址调用指令所指示的位置,从所述函数代码中提取出第一函数调用关系链,所述第一函数调用关系链用于表征所述全局的函数拓扑关系。上述方案中,所述第二解析单元,进一步用于:从所述静态解析模式切换到动态解析模式,解析所述函数代码中包含的函数虚地址,得到与所述函数虚地址对应的函数被调用的实际地址。上述方案中,所述第二解析单元,进一步用于:从所述函数代码中确定出需要动态获取函数调用关系链的待测试进程,所述待测试进程中包含函数虚地址;在所述待测试进程运行前,对所述待测试进程下断点,运行到所述断点时,得到运行的特征数据,根据所述特征数据得到所述函数被调用的实际地址。上述方案中,所述第二解析单元,进一步用于:从所述函数代码中确定出需要动态获取函数调用关系链的待测试进程,所述待测试进程中包含函数虚地址;挂起所述待测试进程;对所述待测试进程中所述函数地址调用指令的所在位置下断点;运行所述待测试进程,若命中所述断点,则触发对所述函数被调用的实际地址的提取处理,提取出所述函数被调用的实际地址。上述方案中,所述服务器还包括:关系链获取单元,用于:根据所述函数被调用的实际地址得到第二函数调用关系链,所述第一函数调用关系链用于表征所述局部的函数拓扑关系;所述第二处理单元,进一步用于:根据所述第一函数调用关系链和所述第二函数调用关系链得到所述函数调用关系链。本专利技术实施例还提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上面任意一种所述信息处理方法的步骤。本专利技术实施例还提供一种服务器,所述服务器包括:存储器,用于存储能够在处理器上运行的计算机程序;处理器,用于运行所述计算机程序时,执行上面任意一种所述信息处理方法的步骤。本专利技术实施例的信息处理方法,包括:以静态方式逆向遍历二进制文件中的函数代码;解析所述函数代码,获取所述函数代码中全局的函数拓扑关系;以动态方式获取所述函数代码运行时函数被调用的实际地址;根据所述函数被调用的实际地址得到局部的函数拓扑关系;根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链。采用本专利技术实施例,对于函数调用关系链存在缺失的现象,以静态方式和动态方式结合的机制,先以静态方式逆向遍历二进制文件中的函数代码,解析得到全局的函数拓扑关系,之后,以动态方式解析得到局部的函数拓扑关系,根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链,该函数调用关系链是完整的,不存在缺失,从而避免了函数调用关系链存在缺失的现象。附图说明图1为本专利技术实施例中进行信息交互的各方硬件实体的示意图;图2为本专利技术实施例一方法的实现流程示意图;图3为本专利技术实施例一系统架构的示意图;图4为本专利技术实施例一服务器的硬件架构示意图;图5为应用本专利技术实施例的一服务器模块组成结构示意图;图6为应用本专利技术实施例的一函数调用指令的识别示意图;图7为应用本专利技术实施例的一应用场景的静态解析流程图;图8为本文档来自技高网...

【技术保护点】
1.一种信息处理方法,其特征在于,所述方法包括:以静态方式逆向遍历二进制文件中的函数代码;解析所述函数代码,获取所述函数代码中全局的函数拓扑关系;以动态方式获取所述函数代码运行时函数被调用的实际地址;根据所述函数被调用的实际地址得到局部的函数拓扑关系;根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链。

【技术特征摘要】
1.一种信息处理方法,其特征在于,所述方法包括:以静态方式逆向遍历二进制文件中的函数代码;解析所述函数代码,获取所述函数代码中全局的函数拓扑关系;以动态方式获取所述函数代码运行时函数被调用的实际地址;根据所述函数被调用的实际地址得到局部的函数拓扑关系;根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链。2.根据权利要求1所述的方法,其特征在于,所述解析所述函数代码,获取所述函数代码中全局的函数拓扑关系,包括:在静态解析模式下解析所述函数代码,得到所述函数代码中的所有指令;从所述函数代码中的所有指令中,识别出函数地址调用指令;根据所述函数地址调用指令所指示的位置,从所述函数代码中提取出第一函数调用关系链,所述第一函数调用关系链用于表征所述全局的函数拓扑关系。3.根据权利要求2所述的方法,其特征在于,所述以动态方式获取所述函数代码运行时函数被调用的实际地址,包括:从所述静态解析模式切换到动态解析模式,解析所述函数代码中包含的函数虚地址,得到与所述函数虚地址对应的函数被调用的实际地址。4.根据权利要求3所述的方法,其特征在于,所述解析所述函数代码中包含的函数虚地址,得到与所述函数虚地址对应的函数被调用的实际地址,包括:从所述函数代码中确定出需要动态获取函数调用关系链的待测试进程,所述待测试进程中包含函数虚地址;在所述待测试进程运行前,对所述待测试进程下断点,运行到所述断点时,得到运行的特征数据,根据所述特征数据得到所述函数被调用的实际地址。5.根据权利要求3所述的方法,其特征在于,所述解析所述函数代码中包含的函数虚地址,得到与所述函数虚地址对应的函数被调用的实际地址,包括:从所述函数代码中确定出需要动态获取函数调用关系链的待测试进程,所述待测试进程中包含函数虚地址;挂起所述待测试进程;对所述待测试进程中所述函数地址调用指令的所在位置下断点;运行所述待测试进程,若命中所述断点,则触发对所述函数被调用的实际地址的提取处理,提取出所述函数被调用的实际地址。6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:根据所述函数被调用的实际地址得到第二函数调用关系链,所述第一函数调用关系链用于表征所述局部的函数拓扑关系;所述根据所述局部的函数拓扑关系,对所述全局的函数拓扑关系中缺失的数据进行补齐,得到函数调用关系链,还包括:根据所述第一函数调用关系链和所述第二函数调用关系链得到所述函数调用关系链。7.一种服务器,其特征在于,所述服务器包括:遍历单元,用于以静态方式逆向遍历...

【专利技术属性】
技术研发人员:熊彪尚鸿
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1