【技术实现步骤摘要】
一种流程差异定位方法及装置
[0001]本专利技术实施例涉及计算机
,特别涉及一种流程差异定位方法及装置。
技术介绍
[0002]在开源代码漏洞挖掘过程中,经常需要从开源代码中提取出关键代码进行测试。但是所提取的代码,往往因为参数设置不完全或静态变量初始化不完全等原因,导致无法激活代码中的功能流程,或者激活了错误流程,从而使运行的代码无法得到预期结果。
[0003]传统意义上,想要解决此类问题,需要人工反复精读开源源码,找出初始化不完善的地方,进行补全。例如,摘取的开源代码片段单独运行后,往往得不到想要的结果。编程人员需要找出特定流程无法激活的底层因果关系,所以需要编程人员大量的阅读源码,找到关键点进行修改。具体流程参考图1,如图1所示,编程人员首先会阅读开源代码,理解代码的含义,然后对开源代码中的特定功能进行摘取。之后编程人员会对摘取的代码进行初始化部分的补全,使之能正常的运行起来,然后比对运行结果是否符合预期。当运行结果不符合预期的时候,会重新理解开源代码的含义,补全初始化阶段不完善的地方。
[00 ...
【技术保护点】
【技术特征摘要】
1.一种流程差异定位方法,其特征在于,包括:获取源代码;从所述源代码中摘取源代码片段;初始化所述源代码片段,并对初始化的所述源代码片段进行编译运行;获得运行结果;在所述运行结果与所述源代码片段在所述源代码中运行时的结果不同的情况下,在所述源代码片段与源代码中的对应位置处均执行插桩操作;运行插桩后的所述源代码片段及源代码,以至少分别寻找所述源代码片段及源代码中的流程控制关键点,并得到记录有插桩后的所述源代码片段与源代码的运行数据的log文件;至少基于所述log文件辅助确定所述源代码片段相对所述源代码的流程差异位置。2.根据权利要求1所述的方法,其特征在于,所述运行插桩后的所述源代码片段及源代码,以至少分别寻找所述源代码片段及源代码中的流程控制关键点,包括:对所述源代码片段与源代码分别进行分块处理,得到多个代码块;至少基于每个所述代码块在对应的所述源代码片段或源代码中的上下文,从多个所述代码块中确定出作为候选流程控制关键点的第一代码块;对所述第一代码块进行关键点过滤处理,以得到分别对应所述源代码片段以及所述源代码中的所述流程控制关键点的第二代码块。3.根据权利要求2所述的方法,其特征在于,所述至少基于每个所述代码块在对应的所述源代码片段或源代码中的上下文,从多个所述代码块中确定出作为候选流程控制关键点的第一代码块,包括:确定每个所述代码块在对应的所述源代码片段或源代码中的上下文;确定所述上下文中是否具有目标关键词,若是,则确定对应的所述代码块为所述第一代码块;所述方法还包括:确定所述源代码片段及源代码中的函数头为所述候选流程控制关键点。4.根据权利要求1所述的方法,其特征在于,运行插桩后的所述源代码片段及源代码,得到记录有插桩后的所述源代码片段与源代码的运行数据的log文件,包括:在所述源代码片段及源代码中对应每个所述流程关键点处均插入log打印函数,以在经插桩处理后的所述源代码片段及源代码运行时,分别生成并输出所述log文件。5.根据权利要求1所述的方法,其特征在于,所述log文件均包括多个线程的运行数据,其中,对应所述源代码的log文件为标准log文件,对应所述源代码片段的log文件为待测log文件;所述至少基于所述log文件辅助确定所述源代码片段相对所述源代码的流程差异位置,包括:分别对所述标准log文件、待测log文件基于线程ID进行分块,以得到多个分别对应各个线程的log块;将对应标准log文件的log块与对应待测log文件的log块进行比对,以辅助确定出所述源代码片段的流程差异位置。
6.根据权利要求5...
【专利技术属性】
技术研发人员:赵润泽,汤国祥,
申请(专利权)人:北京天融信科技有限公司北京天融信软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。