发明名称 一种软件探测方法
摘要 本发明涉及一种软件探测方法和应用该方法的软件探测器及软件探测系统。所述软件探测方法用于对应用软件在运行中的程序流程信息的实时探测,在对被测软件进行代码插装后,通过模型检测判断是否存在“特殊的结构”或“漏洞”,并找出代码执行轨迹,然后将程序流程信息采用无线或有线方式将此信息传送到监管节点或监管网络。本发明在法制监管领域可以对计算机系统内部运行的软件进行实时监控。本发明的软件探测系统构成法制计量监控网络,对计量器具的使用进行监控,为执法打假快速反应提供服务和支撑。能对电子衡器软件或金融监管软件中的“后门程序”和“作弊口令”等特定目标进行探测、并将探测得的信息对外传输,以使监管部门实时监视。
申请公布号 CN102662827B 申请公布日期 2015.02.04
申请号 CN201210054195.9 申请日期 2010.04.13
申请人 张溟 发明人 张溟;张克东;吴华芳
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 南京同泽专利事务所(特殊普通合伙) 32245 代理人 蒋全强
主权项  一种软件探测方法,其特征在于包括如下步骤:A、启动代码插装步骤,该步骤包括:虚拟执行被测软件,即对被测软件的程序源代码进行词法分析和语法分析,以识别出特征代码,该特征代码包括:变量、函数、子程序和面向对象的类;然后对所述程序源代码的程序流程按数据块进行划分,以得到表述所述被测软件的程序结构和静态流程的划分数据并存入一静态数据库中,同时该静态数据库预存有根据被测软件的功能说明书得到的正常程序结构和静态流程;然后在所述程序源代码中插入对应于所述特征代码的探测代码;最后把插入了所述探测代码的程序源代码编译链接成可执行程序;所述探测代码用于收集所述可执行程序运行时生成的动态数据;该动态数据包括:函数、子程序的调用记录,面向对象的类的消息传递,以及由所述函数、子程序的调用记录和面向对象的类的消息传递构成的所述被测软件运行时的程序结构和控制流程;B、执行模式识别步骤,该步骤用于对所述可执行程序执行模型检测,即:将所述静态数据库中预存的正常程序结构和静态流程与所述探测代码获取的被测软件运行时的程序结构和控制流程进行比较;若二者一致,则判断所述可执行程序正常;否则,则判断所述可执行程序中存在“特殊的结构”或“漏洞”;所述“特殊的结构”是指与被测软件的功能说明书不相关的变量、函数、子程序或类的消息传递;所述“漏洞”是指根据被测软件的功能说明书被测软件中缺少应有的变量、函数、子程序或类的消息传递;C、当处理器发现存在“特殊的结构”或“漏洞”后,执行模式分析步骤,该步骤用于分析所述可执行程序的控制流程,以找出并上报引起“特殊的结构”或“漏洞”的代码执行轨迹;该代码执行轨迹是由引起执行“特殊的结构”或“漏洞”的一系列代码的集合所构成的程序流程;D、执行数据处理与传输步骤,该步骤用于根据所述代码执行轨迹,得出被测软件存在“特殊的结构”和/或“漏洞”的信息、及其运行的时间信息和运行次数,然后通过无线或有线的方式,传输到监管节点和/或监管网络;所述控制流程是指:虚拟执行被测软件,即对被测软件的程序源代码进行词法分析和语法分析,识别出特征代码,然后对所述程序源代码的控制流按块进行划分,得到所述被测软件的程序划分数据的流程;所述静态流程是指:把插入了所述探测代码的程序源代码编译链接成可执行程序;运行该可执行程序得到的被测软件运行时的程序流程;所述的代码插装步骤还包括:建立在进行所述语法分析时生成的用于记录并保存在所述可执行程序运行时产生的所述动态数据的动态数据库文件,包括:DD文件,用于记录在所述可执行程序运行时各记录点即所述特征代码的累计运行次数、最后一次运行次数、以及运行时间信息;DDC文件,用于记录在所述可执行程序运行时各判断、条件曾经为真或者为假的数据;DDH文件,用于记录在所述可执行程序运行时各个记录点对应的程序语句是否运行过的历史数据;所述模式分析的步骤包括:程序节点探测模式分析和程序段探测模式分析,用于对所述程序源代码的程序流程按数据块进行分析,然后划分出所述数据块;所述程序节点探测模式分析包括:判断的入口点和出口点、if…else语句中的else的入口点和出口点、链接的入口点和出口点、以及程序单元的入口点和出口点;所述程序段探测模式分析是指两个连续的程序分支点间的程序语句序列;所述程序分支点包括:程序节点、以及无条件转移语句与下一条语句之间的位置。
地址 315700 浙江省宁波市象山县丹东街道象山港路79号