[发明专利]一种基于Intel处理器跟踪的反调试自动绕过方法有效
申请号: | 201811312225.5 | 申请日: | 2018-11-06 |
公开(公告)号: | CN109726115B | 公开(公告)日: | 2020-09-22 |
发明(设计)人: | 韩心慧;李冠成;陈永恒;李天一;武新逢 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 intel 处理器 跟踪 调试 自动 绕过 方法 | ||
1.一种基于Intel处理器跟踪的反调试自动绕过方法,其步骤包括:
1)对于一目标程序,利用Intel处理器跟踪技术获取无调试器状态下该目标程序的控制流;其中获取控制流的方法为:通过HOOK内核获取内核记录自修改代码和JIT代码的代码镜像以及自修改完成时的时间戳,以用于后续对Intel处理器的记录进行解码,且解码过程与该目标程序相结合获得该目标程序的控制流;
2)对该目标程序调试过程中,将步骤1)得到的所述控制流与有调试器状态下该目标程序的控制流进行比对自动检测出该目标程序的基于调试器检测的反调试技术及其所在位置;然后根据当前检测到的反调试技术在其对应位置生成绕过该反调试技术的补丁。
2.如权利要求1所述的方法,其特征在于,步骤1)中,利用Intel处理器跟踪技术获取无调试器状态下该目标程序在确定输入下的控制流。
3.如权利要求2所述的方法,其特征在于,步骤1)中,控制该目标程序可能的所有的输入,使其保持与调试时的输入数据完全相同,得到该目标程序的控制流。
4.如权利要求1所述的方法,其特征在于,获取自修改代码和JIT代码的代码镜像以及自修改完成时的时间戳的方法为:对该目标程序进行内存映射,当映射的内存为可写可执行内存,则通过修改页表移除页面内存的可执行权限;当该页面内存由于不可执行而产生页故障时,将该页面内存镜像到一文件中,并记录下镜像的时间戳,然后赋予该页面内存可执行权限,并移除其可写权限。
5.如权利要求1所述的方法,其特征在于,将步骤1)得到的所述控制流以及目标程序的可执行文件进行匹配,识别出基于调试器干扰的反调试技术;然后通过覆盖NOP的方式将其无效,以绕过所述基于调试器干扰的反调试技术。
6.如权利要求5所述的方法,其特征在于,识别出基于调试器干扰的反调试技术的方法为:首先预先定义基于调试器干扰的反调试技术的特征,建立模式数据库;然后利用Intel处理器跟踪技术和Binary进行控制流和数据流分析,获取该目标程序调用的特征信息;将获取的特征信息与模式数据库中的特征进行比对,如果找到匹配的特征,则判定该目标程序中存在基于调试器干扰的反调试技术。
7.如权利要求5或6所述的方法,其特征在于,若成功检测到基于调试器干扰的反调试技术,则重新执行步骤1),以获取修改后的该目标程序的控制流。
8.如权利要求1所述的方法,其特征在于,对该目标程序调试过程中,对该目标程序可能的所有的输入进行HOOK,使其与步骤1)时的输出相同;HOOK调试器中所有会产生控制流变化的命令,使当前获得的命令在执行的同时与步骤1)所获取的控制流信息进行比对,自动检测出该目标程序的基于调试器检测的反调试技术及其所在位置;然后根据当前检测到的反调试技术在其对应位置生成绕过该反调试技术的补丁。
9.如权利要求8所述的方法,其特征在于,通过HOOK调试器中所有会产生控制流变化的命令来完成控制流比对的方法为:该目标程序开始执行之前,在该目标程序的执行入口下自定义断点,然后寻找接下来的分支指令,对其下自定义断点;然后执行该目标程序并在每次断点触发时,首先去判断该断点是否为自定义断点,如果不是,则停止调试器运行并交由用户进行调试;如果是自定义断点,则调试器将继续寻找下一条分支指令并对其下自定义断点,然后继续执行直至触发下一断点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811312225.5/1.html,转载请声明来源钻瓜专利网。