[发明专利]一种程序入口点OEP的确定方法及装置有效
申请号: | 201210587608.X | 申请日: | 2012-12-28 |
公开(公告)号: | CN103064687A | 公开(公告)日: | 2013-04-24 |
发明(设计)人: | 陈锦;刘业欣 | 申请(专利权)人: | 北京神州绿盟信息安全科技股份有限公司;北京神州绿盟科技有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭红丽 |
地址: | 100089 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 入口 oep 确定 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,尤指一种程序入口点OEP的确定方法及装置
背景技术
加壳是可执行程序资源压缩的简称,是保护文件的常用手段,其原理是利用特殊的算法,对可执行程序里的资源进行压缩、加密。加壳程序可以直接运行,但是不能获取原始程序,要经过脱壳才可以获取。脱壳的过程主要为三步:第一步,确定原始程序的入口点(Original Entry Point,OEP);第二步,修复导入表和重定位表;第三步,将内存中的原始程序写入文件,更改程序的新入口地址为OEP,这一步通常称为转储(Dump)。确定原始程序的OEP是非常关键的步骤。
目前,在确定原始程序的OEP时,通常会采用特征定位法,根据已知类型壳的特征来确定加壳程序对应的原始程序的OEP,现有的产品有针对具体壳的脱壳脚本或自动脱壳机等。这种方法在确定OEP时成功率很高,但是一旦已知类型壳升级可能导致特征定位失效,并且对于确定使用未知类型壳的加壳程序对应的原始程序的OEP不能使用。因此,现有的确定程序OEP方法并不能普遍适用于确定各种加壳程度对应的原始程序的OEP。
发明内容
本发明实施例提供一种程序入口点OEP的确定方法及装置,用以解决现有的确定程序OEP的方法适用范围有限的问题。
一种程序入口点OEP的确定方法,包括:
记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;
根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;
获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;
获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。
一种程序入口点OEP的确定装置,包括:
记录单元,用于记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;
确定单元,用于根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;
计算单元,用于获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;
获取单元,用于获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。
本发明有益效果如下:
本发明实施例提供的程序入口点OEP的确定方法及装置,通过记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。该方案可以适用于确定各种加壳程序对应的原始程序的OEP,方法简单,效率高。
附图说明
图1为本发明实施例中程序入口点OEP的确定方法的流程图;
图2为本发明实施例中的可执行程序的结构示意图;
图3为本发明实施例中程序入口点OEP的确定装置的结构示意图。
具体实施方式
针对现有中确定OEP的方法适用范围有限的问题,本发明实施例提供一种程序入口点OEP的确定方法,该方法的流程如图1所示,执行步骤如下:
S10:记录加壳程序运行过程中产生的数据改写信息,数据改写信息包括数据改写地址和数据改写时间。
可以使用虚拟机或者调试器等运行加壳程序,并记录运行过程中产生的数据改写信息。
S11:根据记录的数据改写信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
加壳程序运行的过程中,运行到OEP后,原始程序已还原,后面的流程都是执行原始程序的流程。假设原始程序运行在内存区域A中,那么当到达原始程序的OEP后,即进入内存区域A,直到加壳程序运行结束再也不会离开内存区域A,则时刻T进入内存区域A的那个地址,就是OEP。因此,可以根据记录的数据改写信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京神州绿盟信息安全科技股份有限公司;北京神州绿盟科技有限公司,未经北京神州绿盟信息安全科技股份有限公司;北京神州绿盟科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210587608.X/2.html,转载请声明来源钻瓜专利网。