[发明专利]一种基于动态特征的自定义堆管理函数的自动识别方法有效
申请号: | 201711248935.1 | 申请日: | 2017-12-01 |
公开(公告)号: | CN108469997B | 公开(公告)日: | 2021-10-26 |
发明(设计)人: | 贾相堃;张超;苏璞睿;杨轶;和亮;闫佳 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/50;G06F9/355 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 刘召民 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 动态 特征 自定义 管理 函数 自动识别 方法 | ||
1.一种基于动态特征的自定义堆管理函数的自动识别方法,其步骤如下:
1)获取目标程序动态执行过程的二进制指令记录;
2)通过call-ret指令配对,恢复二进制指令记录中函数边界信息,得到候选函数;
3)根据自定义堆管理函数的动态特征对候选函数进行筛选;
4)将筛选出的自定义堆管理函数进行统计去重,实现自定义堆管理函数的自动识别;
步骤3)中所述动态特征包括返回值特征、处理流程特征和使用情况特征;
步骤3)中根据返回值特征进行筛选,包括根据获得堆空间的系统接口的调用参数和返回值更新堆状态,筛选出返回值是指向堆空间的指针的函数作为候选函数;
所述处理流程特征包括:函数根据申请空间的大小不同采用不同的流程;当自定义堆空间不足时向系统申请空间;分配的堆空间进行对齐操作;在自定义的管理结构中维护堆状态,并保护该结构的读写一致;步骤3)中筛选出包含的上述处理流程特征超过设定数量的函数作为候选函数;
所述使用情况特征包括:堆管理函数被调用多次,且每次的返回地址不同;返回地址空间先写后读;自定义堆管理函数对返回地址空间进行初始化操作;步骤3)中筛选出包含的上述使用情况特征超过设定数量的函数作为候选函数。
2.如权利要求1所述的基于动态特征的自定义堆管理函数的自动识别方法,其特征在于,所述二进制指令记录包括指令的EIP、相关寄存器信息、指令的机器码、记录编号ID。
3.如权利要求2所述的基于动态特征的自定义堆管理函数的自动识别方法,其特征在于,所述寄存器包括EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。
4.如权利要求3所述的基于动态特征的自定义堆管理函数的自动识别方法,其特征在于,步骤2)还包括分析ret指令之后执行的下一条指令,采用比较ESP的值和EIP指令距离的方法对恢复得到的函数边界进行修正。
5.如权利要求4所述的基于动态特征的自定义堆管理函数的自动识别方法,其特征在于,通过使call指令的ESP的值小于下一条指令的ESP的值,且ret指令之后执行的下一条指令EIP等于call指令加call指令长度对恢复得到的函数边界进行修正。
6.如权利要求1所述的基于动态特征的自定义堆管理函数的自动识别方法,其特征在于,步骤4)中根据最终筛选出的自定义堆管理函数的入口地址、出口地址进行统计,并去除存在互相调用关系的候选函数中的子函数、保留外层函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711248935.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于自动快照的系统高可用方法
- 下一篇:一种通用型软件自动化测试框架系统