一种Windows内核代码的定位方法技术

技术编号:8489842 阅读:189 留言:0更新日期:2013-03-28 11:56
本发明专利技术公开了一种Windows内核代码的定位方法。先比较要搜索代码的不同版本Windows的差异,得到一段比较通用的关键字,用得到的关键字在不同版本Windows下用Diff算法计算结果,分析结果后得到一个有一定范围的可行值,对未知版本Windows使用该关键字和可行值进行代码搜索,得出准确的定位结果。通过该方法可以使用在所有不同的Windows操作系统上,而不必对每个不同的Windows操作系统进行单独处理,是一种快速,准确的定位方法。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及。
技术介绍
Windows的版本和补丁众多,需要修改的代码段在不同的Windows版本和补丁下,差异不一,不尽相同。就算是同样版本和补丁的系统,代码在内存中的位置都是不相同的,这给代码定位带来不便,所以必须找到一种快速和准确的代码定位方法。要实现简单的代码定位,通常比较常用的方法是先确定需要定位的代码的大概范围,然后根据被定位代码的特征代码,运用传统的搜索方法,来定位出代码的具体位置。此定位方法需要搜索的代码范围较大,效率低,出现重复匹配的几率大,甚至会有搜索不到匹配结果的情况出现。现行比较流行的代码定位方法,是通过对函数的调用栈进行回溯,找到需要定位的代码所在的函数,然后再根据被定位代码的特征代码,运用传统的搜索方法,来定位出代码的具体位置。这个方法可以定位到一段比较小的代码范围搜索,定位的成功率较高,但是栈回溯的技术难度较大,容易出错,不好掌握。
技术实现思路
本专利技术的目的是为了克服现有技术的缺陷,提供,该方法先比较要搜索代码的不同版本Windows的差异,得到一段比较通用的关键字,用得到的关键字在不同版本Windows下用DifT算法计算结果,分析结果后得到一个有一定范围的可行值,对未知版本Windows使用该关键字和可行值进行代码搜索,得出准确的定位结果。其中,用关键字搜索,通过DifT算法得到最大匹配率和最优匹配路径。得出最大匹配率和最优匹配路径的结果,与预先计算得到的一定范围的可行值进行比较,如果结果在可行值的范围内,说明代码匹配,这样就可以得出准确的定位结果。本专利技术技术方案带来的有益效果本专利技术方法适用范围广,速度快,准确度高。可以在所有不同的Windows操作系统上使用,而不必对每个不同的Windows操作系统进行单独处理。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是本专利技术方法的流程图。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。为了解决代码定位存在的问题,必须找到一种快速和准确的代码定位方法。运用传统的搜索方法,不仅搜索速度慢,搜索结果也不理想,既然传统的搜索方法不能满足技术要求,就应该运用其它搜索方法。经过一系列的对比和筛选,确定运用DifT算法(AnAlgorithm for Differential File Comparison),这个算法由 James W. Hunt 和M. DouglasMcIlroy在1976年加州斯坦福大学提出,能够比较两个文本之间的差异,得出最大匹配率和最优匹配路径的结果。比如要在字符串〃BCXCADFESBABCACA〃中找出字符串〃ABCACADF〃。传统的搜索方法会没有输出结果,因为没有完全相同的字符串出现,如果改成用Diff算法,则可以输出4个最大匹配方案,分别为〃BCXCADFESBABCACA" " ABCACADF" ;〃BCXCADFESBABCACA" " ABCACADF";"BCXCADFESBABCACA" " ABCACADF"; "BCXCADFESBABCACA" " ABCACADF",其中最大匹配率和最优匹配路径为第四个〃BCXCADFESBABCA CA" " ABCA CADF〃。因为传统搜索方法只能输出匹配和不匹配的两个结果,这对于可变但变化不大的源和目标的搜索,就显得毫无用处,而Diff算法则可以很好地解决这个问题。本专利技术提供的的流程图如图1所示具体为先比较要搜索代码的不同版本Windows的差异,得到一段比较通用的关键字,用得到的关键字在不同版本Windows下用DifT算法计算结果,分析结果后得到一个有一定范围的可行值,对未知版本Windows使用该关键字和可行值进行代码搜索,得出准确的定位结果。下面就举例说明利用Diff算法来搜索未导出的Windows SP3内核函数PspExitThread,来说明本技术方法的优越性。因为导出函数PsTerminateSystemThread 会调用 PspTerminateThreadByPointer函数,而PspTerminateThreadByPointer函数进而会调用PspExitThread函数,所以要得到内核函数PspExitThread的地址,必须由导出函数PsTerminateSystemThread开始搜索,得到PspTerminateThreadByPointer函数的地址,然后再搜索PspTerminateThreadByPointer 函数,最终得到函数 PspExitThread 的地址。下面是WindowsXP SP3 下的 PsTerminateSystemThread 函数的汇编代码nt!PsTerminateSystemThread:805d23fc 8bffmov edi, edi805d23fe 55push ebp805d23ff 8becmov ebp, esp 805d2401 64al24010000 mov eax, dword ptrfs:805d2407 f6804802000010 test byte ptr, IOh805d240e 7507jne nt!PsTerminateSystemThread+Oxlb(80权利要求1.,其特征在于,先比较要搜索代码的不同版本Windows的差异,得到一段比较通用的关键字,用得到的关键字在不同版本Windows下用Diff算法计算结果,分析结果后得到一个有一定范围的可行值,对未知版本Windows使用该关键字和可行值进行代码搜索,得出准确的定位结果。2.根据权利要求1所述的方法,其特征在于,用关键字搜索,通过Diff算法得到最大匹配率和最优匹配路径。3.根据权利要求1或2所述的方法,其特征在于,得出最大匹配率和最优匹配路径的结果,与预先计算得到的一定范围的可行值进行比较,如果结果在可行值的范围内,说明代码匹配,这样就可以得出准确的定位结果。4.根据权利要求1所述的方法,其特征在于,该方法适用于所有不同的Windows操作系统上,而不必对每个不同的Windows操作系统进行单独处理。5.根据权利要求1所述的方法,其特征在于,内核代码的定位通过相关函数之间的调用关系一步一步找到最终要定位的那个代码的地址。全文摘要本专利技术公开了。先比较要搜索代码的不同版本Windows的差异,得到一段比较通用的关键字,用得到的关键字在不同版本Windows下用Diff算法计算结果,分析结果后得到一个有一定范围的可行值,对未知版本Windows使用该关键字和可行值进行代码搜索,得出准确的定位结果。通过该方法可以使用在所有不同的Windows操作系统上,而不必对每个不同的Windows操作系统进行单独本文档来自技高网...

【技术保护点】
一种Windows内核代码的定位方法,其特征在于,先比较要搜索代码的不同版本Windows的差异,得到一段比较通用的关键字,用得到的关键字在不同版本Windows下用Diff算法计算结果,分析结果后得到一个有一定范围的可行值,对未知版本Windows使用该关键字和可行值进行代码搜索,得出准确的定位结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:柯宗贵柯宗庆杨育斌梁永秋
申请(专利权)人:蓝盾信息安全技术股份有限公司
类型:发明
国别省市:

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

1