[发明专利]一种计算机程序进行指令级监控和分析系统及方法有效
申请号: | 201310186311.7 | 申请日: | 2013-05-20 |
公开(公告)号: | CN103268441A | 公开(公告)日: | 2013-08-28 |
发明(设计)人: | 李贵林 | 申请(专利权)人: | 李贵林 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 西安吉盛专利代理有限责任公司 61108 | 代理人: | 张培勋 |
地址: | 100070 北京市丰*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 计算机 程序 进行 指令 监控 分析 系统 方法 | ||
技术领域
本发明涉及计算机安全和程序分析技术,尤其是一种计算机程序进行指令级监控和分析系统及方法。
背景技术
现有的计算机程序监控和分析技术只能做到函数级监控和分析,无法做到指令级别上的监控和分析。这里的“函数”指的是计算机程序中实现某个特定功能的一段子程序,而“指令”则是指每一条实现某种控制或运算的代码,指CPU指令,也就是计算机运行的最小单位。
函数级监控,指的是现有技术中被监控的程序对某个或某些特定函数的监视,包括有没有调用过这个(些)函数,调用的时间、调用参数和执行结果等,以便确定被监控的程序有没有执行这个(些)函数的功能,如果有则监控它调用这个(些)函数的执行动作和执行结果。并根据这样的监控结果来分析被监控程序的行为动作,以便进一步做出某种判断和告警等处理。
这种函数级监控技术有3个明显缺陷:
1)监控的最大精度只能精确到函数,而不是指令:也就是说,只能监控到被监控的程序是否执行过某个(些)函数,无法进一步细化到指令层次上的监控。
2)要监控的函数必须事先进行钩挂:要监控程序有没有执行过某个函数,必须事先对这个函数进行过钩挂处理,否则没办法监控到。所谓“钩挂”,指的是通过修改某个函数的入口地址或者函数体中的某些指令(通常是入口处的指令),来改变这个函数的执行流程,使该函数被调用时,首先执行一段设置好的监控程序代码,再去执行该函数本身;或者先执行该函数本身再执行一段监控程序代码;甚至完全不再执行原来的函数本身,而专门执行特定的监控程序代码等。这样,当调用被修改函数时,总是会执行一段设定好的监控程序代码,通过在这段监控程序代码中,记录这个函数的调用者身份,调用参数和执行结果等信息,才能实现对这个函数的监控。
3)要监控的函数必须是事先“公知”的:由于必须对要监控的函数进行钩挂处理,所以在被监控之前,必须详细知道这些函数的技术细节,这些细节包括:函数的加载地址,函数的参数,函数的执行效果和含义等。在现实环境中,一般只有操作系统本身的函数才能满足这些条件。而操作系统自身的函数数量极大,不可能实现完全监控,同时,它还有其他缺点,诸如:许多函数的技术细节没有公开,有些函数可能发生变化等。并且,即便能“强行”实现监控,也会因监控代码过于庞大而影响到操作系统本身,改变被监控程序的执行环境,使监控变得失真。
这三个缺陷导致了一些对程序的监控无法全面和详细的必然结果:由于只有操作系统本身的若干个函数才能够监控到,那么被监控的程序中大量的自有函数将无法监控到,它们的行为会“一团漆黑”;被监控的程序调用了没有事先钩挂的操作系统函数,这些动作也将无从得知,即造成“知之不详”的状况;同时,无法实现真正的行为自动分析。
发明内容
本发明的目的是提供一种计算机程序进行指令级监控和分析系统及方法,通过指令级别上的监控,实时、简单、准确地监控任意程序中的所有运行细节,并对这些细节进行数据分析,对恶意代码、后门间谍等程序的自动分析或者辅助分析带来巨大进步。
本发明的目的是这样实现的,一种计算机程序进行指令级监控和分析系统,其特征是:包括云端服务器,宿主机,虚拟机,数据库DB和本地分析系统;云端服务器用于记录数据,同时作为异地数据分析系统对数据进行分析;宿主机用于提供一个环境存储动态链接库,并在需要的时候运行动态链接库中的函数;虚拟机用于调用init函数和callback函数,并提供函数SetCallback来设置callback函数;数据库DB用于存储指令级监控所得到的数据,以便在数据分析时,供本地分析系统随时调用分析。
一种计算机程序进行指令级监控和分析方法,其特征是:至少包括如下步骤:
步骤201:开始本发明中指令级的监控过程;
步骤202:定制一个虚拟机并使它运行就绪;
步骤203:虚拟机执行一个初始化函数init,并加载一个动态链接库Attach.dll,在调用完成init函数后,继续按照正常虚拟机的代码运行;
步骤204:虚拟机虚拟执行一条指令,开始检测过程;
步骤205:在虚拟机执行完成一条指令之后,调用一次回调函数callback(PCALLBACKDATApstCallBackLog),在callback函数中,读取当前这条指令执行的记录,记录内容为LogRecord;
步骤206:将对当前指令的监控结果存储到数据库DB中,为指令级分析提供数据支持;
步骤207:判断当前指令级监控是否结束,若是进行步骤208,否则,进行步骤204;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于李贵林,未经李贵林许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310186311.7/2.html,转载请声明来源钻瓜专利网。