一种程序文件恢复系统及方法技术方案

技术编号:14339537 阅读:63 留言:0更新日期:2017-01-04 12:07
本发明专利技术涉及计算机安全领域,公开了一种程序文件恢复系统。本发明专利技术还公开了一种程序文件恢复方法。该方法包括:步骤S1:查找所述目标函数内存地址的模块起始地址,并获取所述模块起始地址在磁盘上所对应的PE文件;步骤S2:在PE文件中找到目标函数的模块起始地址对应的文件偏移位置,并将文件偏移位置处的内容读取到内存中保存;步骤S3:将文件偏移位置处内容与内存中的目标函数的内存地址进行比对,若相同,则结束,若不同,则将内存中的目标函数的内存地址替换成文件偏移位置处的内容。本发明专利技术能够有效保证用户程序的使用安全。

【技术实现步骤摘要】

本专利技术涉及计算机安全领域,具体涉及一种程序文件恢复系统和一种程序文件恢复方法。
技术介绍
随着网络通信技术的快速发展,各种智能操作系统被广泛应用,从而方便人们的生产生活,但各种外挂或木马程序也逐渐侵入到操作系统中,对操作系统中运行的各种程序的函数进行修改,从而达到外挂或木马所要达到的非法目的,外挂和木马程序一般是通过内联钩子函数对程序中的目标函数进行修改挂钩,即在目标函数的前5个字节中加入跳转指令,这样无论目标函数如何解析自身的函数地址,外挂或木马均能勾住目标函数,从而控制目标函数的运行,进而达到外挂或木马所要达到的非法目的,影响用户的正常使用体验。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种程序文件恢复系统和一种程序文件恢复方法,能够有效保证用户程序的使用安全。为达到以上目的,本专利技术采取的技术方案是:包括:查找模块,适于根据目标函数的模块起始地址,查找模块起始地址在硬盘中对应的PE文件,并获取模块起始地址在PE文件中对应文件偏移位置处的内容;检测模块,适于将查找模块获取的文件偏移位置处的内容与目标函数的内存地址进行比对,并判断两者是否相同;恢复模块,适于根据所述检测模块的判断结果,若文件偏移位置处的内容与目标函数的内存地址不相同,则将内存中的目标函数的内存地址替换成文件偏移位置处的内容,若相同,则结束操作。在上述技术方案的基础上,所述恢复模块还用于调用API函数中的VirtualProtect指令更改目标函数的内存属性。在上述技术方案的基础上,当内存中目标函数的内存地址替换成文件偏移位置处内容时,所述恢复模块调用API函数中的VirtualProtect指令将目标函数的内存属性更改为可写。本专利技术还提供一种程序文件恢复方法,该方法包括以下步骤:步骤S1:查找所述目标函数内存地址的模块起始地址,并获取所述模块起始地址在磁盘上所对应的PE文件;步骤S2:在PE文件中找到目标函数的模块起始地址对应的文件偏移位置,并将文件偏移位置处的内容读取到内存中保存;步骤S3:将文件偏移位置处内容与内存中的目标函数的内存地址进行比对,若相同,则结束,若不同,则将内存中的目标函数的内存地址替换成文件偏移位置处的内容。在上述技术方案的基础上,所述步骤S1具体为:将目标函数记为pFunction,然后查找目标函数内存地址的模块起始地址,并获取模块起始地址在磁盘上所对应的PE文件。在上述技术方案的基础上,所述步骤S2具体包括以下步骤:S2.1:获取PE文件中的所有节表,并将节表的个数标记为N,节表记为SectionTable,所述N为自然数;S2.2:读取第i个节表,且0≤i<N,判断pFunctio与VirtualAddress和VirtualAddress+SectionTable[i]之间的字节长度大小关系,若VirtualAddress≤pFunctio<VirtualAddress+SectionTable[i]则目标函数的文件偏移位置=(PointerToRawData-pFunction[i]),其中,VirtualAddress为SectionTable的内存起始地址,SectionTable[i]表示第i个节表的内存地址,PointerToRawData为SectionTable的文件起始位置地址,pFunction[i]为第i个节表的内存起始地址;S2.3:将文件偏移位置处的内容读取到内存中保存。在上述技术方案的基础上,所述步骤S3还包括:将目标函数的内存属性改为可写,再将内存中目标函数的内存地址替换成文件偏移位置处的内容。在上述技术方案的基础上,目标函数的内存属性的更改通过API函数中的VirtualProtect指令完成。与现有技术相比,本专利技术的一种程序文件恢复系统的优点在于:查找模块根据内存中运行的程序的函数的模块起始地址,查找到该函数对应的PE文件中的文件偏移位置处的内容,然后检测模块将文件偏移位置处的内容与该函数的内存地址进行比对,相当于将运行在内存中函数的内存地址,与该函数在硬盘中的最初始地址进行比较,从而判断该函数是否被挂钩,若被函数被挂钩,则进行替换修复,将函数恢复到正常状态,保证程序的正常稳定运行。本专利技术的一种程序文件恢复方法的优点在于:通过将函数的内存地址与该函数文件偏移位置处的内容进行比对,判断函数是否被挂钩,若被挂钩,则进行替换修复,采用该方法对内存中运行的程序的各个函数进行检测和修复,从而保证程序的正常稳定运行,提高用户体验。附图说明图1为本专利技术一种程序文件恢复方法的流程图。具体实施方式以下结合附图及实施例对本专利技术作进一步详细说明。本专利技术提供一种程序文件恢复系统,该系统具体的包括查找模块、检测模块和恢复模块,程序保存在硬盘中,每个程序均包括多个函数,当程序需要运行时,会将程序读取到内存中进行运行,这里对内存中程序的某一个函数进行检测举例,检测该函数是否被挂钩,若被挂钩,则将该函数恢复为初始状态,这里将该函数命名为目标函数。目标函数运行在内存中,查找模块适于根据内存中目标函数的模块起始地址,查找到模块起始地址在硬盘中对应的PE文件,并获取模块起始地址在PE文件中对应文件偏移位置处的内容;检测模块适于将查找模块获取的文件偏移位置处的内容与目标函数的内存地址进行比对,并判断两者是否相同;恢复模块适于根据检测模块的判断结果,若文件偏移位置处的内容与目标函数的内存地址不相同,说明目标函数被挂钩了,则将内存中的目标函数的内存地址替换成文件偏移位置处的内容,从而将目标函数恢复成初始状态,即正常状态,若相同,说明目标函数没有被挂钩,则结束操作。一般情况下,函数的内存属性仅为可读和可执行属性,因此在将内存中目标函数的内存地址替换成文件偏移位置处内容时,需要调用API(ApplicationProgrammingInterface,应用程序编程接口)函数中的VirtualProtect指令,将目标函数的内存属性更改为可写,然后再替换,VirtualProtect为一逻辑包装函数,常用于修改其它函数的内存属性。使用控制端对运行在内存中程序的各个函数进行检测和修复,该系统带有检测和修复功能,便能够消除程序的潜在危险,并对已经被挂钩的函数进行修复,从而保证程序的正常运行。参见图1所示,本专利技术还提供一种程序文件恢复方法,为上述程序文件恢复系统的具体运行方法,该方法包括以下步骤:步骤S1:将目标函数记为pFunction,然后调用API函数中的VirtualQuery指令来对目标函数的内存地址的模块起始地址进行查找,查找到模块起始地址后,再调用API函数中的GetModuleFileName指令查找模块起始地址在磁盘上所对应的PE(PortableExecutable,可移植的执行体)文件,PE文件内包含有目标函数对应程序的导出表、导入地址表、重定位表、节表等很多重要信息,这里我们用到的是PE文件中的节表;步骤S2:获取PE文件中的所有节表,并将节表的个数标记为N,节表记为SectionTable,所述N为自然数;读取第i个节表,且0≤i<N,判断pFunctio与VirtualAddress和VirtualAddress+SectionTableall[i]之间的字节长度大小关本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201610629674.html" title="一种程序文件恢复系统及方法原文来自X技术">程序文件恢复系统及方法</a>

【技术保护点】
一种程序文件恢复系统,用于检测并恢复内存中目标函数,其特征在于,包括:查找模块,适于根据目标函数的模块起始地址,查找模块起始地址在硬盘中对应的PE文件,并获取模块起始地址在PE文件中对应文件偏移位置处的内容;检测模块,适于将查找模块获取的文件偏移位置处的内容与目标函数的内存地址进行比对,并判断两者是否相同;恢复模块,适于根据所述检测模块的判断结果,若文件偏移位置处的内容与目标函数的内存地址不相同,则将内存中的目标函数的内存地址替换成文件偏移位置处的内容,若相同,则结束操作。

【技术特征摘要】
1.一种程序文件恢复系统,用于检测并恢复内存中目标函数,其特征在于,包括:查找模块,适于根据目标函数的模块起始地址,查找模块起始地址在硬盘中对应的PE文件,并获取模块起始地址在PE文件中对应文件偏移位置处的内容;检测模块,适于将查找模块获取的文件偏移位置处的内容与目标函数的内存地址进行比对,并判断两者是否相同;恢复模块,适于根据所述检测模块的判断结果,若文件偏移位置处的内容与目标函数的内存地址不相同,则将内存中的目标函数的内存地址替换成文件偏移位置处的内容,若相同,则结束操作。2.如权利要求1所述的一种程序文件恢复系统,其特征在于:所述恢复模块还用于调用API函数中的VirtualProtect指令更改目标函数的内存属性。3.如权利要求2所述的一种程序文件恢复系统,其特征在于:当内存中目标函数的内存地址替换成文件偏移位置处内容时,所述恢复模块调用API函数中的VirtualProtect指令将目标函数的内存属性更改为可写。4.一种基于权利要求1所述系统的程序文件恢复方法,用于检测运行在内存中的目标函数是否被非法修改,其特征在于,该方法包括以下步骤:步骤S1:查找所述目标函数内存地址的模块起始地址,并获取所述模块起始地址在磁盘上所对应的PE文件;步骤S2:在PE文件中找到目标函数的模块起始地址对应的文件偏移位置,并将文件偏移位置处的内容读取到内存中保存;步骤S3:将文件偏移位置处内容与内存中的目标函数的内存地址进行比对,若相同,则结束,若不同,则将内存中的目标函数的内存地址替换成文件偏移位置处的内容。5.如权利要求4所述的一种程...

【专利技术属性】
技术研发人员:杨亮
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

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

1