[发明专利]基于可执行文件的函数判定方法及装置有效
申请号: | 201610920945.4 | 申请日: | 2016-10-20 |
公开(公告)号: | CN107967203B | 公开(公告)日: | 2020-07-28 |
发明(设计)人: | 党万春;周海;毕研涛;魏学峰 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F11/34 | 分类号: | G06F11/34 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 朱雅男 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 可执行文件 函数 判定 方法 装置 | ||
本发明公开了一种基于可执行文件的函数判定方法及装置,属于计算机技术领域。所述方法包括:获取应用程序的可执行文件,可执行文件中包括函数;根据可执行文件生成应用程序的汇编文件;根据汇编文件中与函数相关的汇编指令片段检测函数是否满足预设条件;预设条件是对函数进行Hook时,应用程序出错的预警条件;若函数满足预设条件,则判定函数不支持Hook行为;解决了终端在通过调用函数以判定函数是否支持Hook行为时会导致应用程序频繁出错而影响终端正常使用的问题;达到了避免了应用程序频繁的出错,保证终端的正常运行,节约了终端资源的效果。
技术领域
本发明实施例涉及计算机技术领域,特别涉及一种基于可执行文件的函数判定方法及装置。
背景技术
终端通过调用应用程序中的各个函数来运行该应用程序。在应用程序的运行过程中,当软件工程师需要对应用程序的运行情况进行分析时,通常需要获取应用程序中的函数的运行数据,目前常用的做法是对该函数进行Hook(钩子)行为,使终端在调用该函数时,先跳转至另一个回调函数,通过回调函数获取该函数的运行数据。
应用程序中的函数并不是都支持Hook行为,如果对不支持Hook行为的函数进行Hook,会导致终端在调用该函数并跳转至回调函数时,应用程序出错。因此,采用Hook技术对一个函数进行分析之前,需要先判定该函数是否支持Hook行为。目前常用的做法是先对函数试验性地进行Hook,若终端在调用该函数并跳转至回调函数时,应用程序出错,则判定该函数实际是不支持采用Hook技术的。
在现有技术中,当终端调用函数导致应用程序出错时,才能判定该函数不支持Hook行为,应用程序频繁出错会消耗较多的终端资源,且该应用程序出错时,可能会影响到终端中其他应用程序的正常运行,从而影响终端的正常使用。
发明内容
为了解决终端在判定函数是否支持Hook行为时会导致应用程序频繁出错而影响终端正常使用的问题,本发明实施例提供了一种基于可执行文件的函数判定方法及装置。所述技术方案如下:
第一方面,提供了一种基于可执行文件的函数判定方法,该方法包括:
获取应用程序的可执行文件,可执行文件中包括函数;
根据可执行文件生成应用程序的汇编文件;
根据汇编文件中与函数相关的汇编指令片段检测函数是否满足预设条件;预设条件是对函数进行Hook时,应用程序出错的预警条件;
若函数满足预设条件,则判定函数不支持Hook行为。
第二方面,提供了一种基于可执行文件的函数判定装置,该装置包括:
获取模块,用于获取应用程序的可执行文件,所述可执行文件中包括函数;
生成模块,用于根据所述可执行文件生成所述应用程序的汇编文件;
检测模块,用于根据所述汇编文件中与所述函数相关的汇编指令片段检测所述函数是否满足预设条件;所述预设条件是对所述函数进行钩子Hook时,所述应用程序出错的预警条件;
判定模块,用于若所述函数满足所述预设条件,则判定所述函数不支持Hook行为。
本发明实施例提供的技术方案带来的有益效果是:
终端根据应用程序的可执行文件生成应用程序的汇编文件,根据汇编文件中与某一个函数相关的汇编指令片段来检测对该函数进行Hook时是否会导致应用程序出错,当检测到对该函数进行Hook会导致应用程序出错时,即能判定该函数不支持Hook行为,而不需要在实际调用该函数导致应用程序出错时才能判定,避免了应用程序频繁的出错,保证终端的正常运行,节约了终端资源。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610920945.4/2.html,转载请声明来源钻瓜专利网。