[发明专利]一种程序调用的优化方法及装置在审
申请号: | 201811581212.8 | 申请日: | 2018-12-24 |
公开(公告)号: | CN111352629A | 公开(公告)日: | 2020-06-30 |
发明(设计)人: | 任太胜;王冬 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/448 |
代理公司: | 北京华沛德权律师事务所 11302 | 代理人: | 房德权 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 调用 优化 方法 装置 | ||
本发明公开了一种程序调用的优化方法及装置,其中方法包括:将原函数与目标函数所对应的本地代码进行链接;将所述原函数所在栈的第一目标参数调整为预设的替换函数所对应的参数,以执行所述替换函数;在执行完所述替换函数之后,将所述替换函数所在栈的第二目标参数调整为所述目标函数对应的本地代码所对应的参数,以跳转执行所述目标函数所对应的本地代码。本发明提供的方法及装置能够在实现hook过程中不会直接调用目标函数,节省了系统开销,提高了程序运行的稳定性。
技术领域
本发明涉及软件开发技术领域,尤其涉及一种程序调用的优化方法及装置。
背景技术
Hook(钩子)函数是处理消息的代码段,可以通过它来监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理、优化等。在Android开发中,通常也会使用到hook原理让某些方法运行前,调用我们自己定义的方法来满足开发需求。
目前,实现hook的过程中均是直接调用目标函数,这样的运行机制需要使用到运行空间,将带来系统开销;而频繁的调用目标函数也存在一定的不稳定性,容易破坏目标函数。
发明内容
鉴于上述问题,本发明提出了一种程序调用的优化方法及装置,在实现hook过程中不会直接调用目标函数,节省了系统开销,提高了程序运行的稳定性。
第一方面,本申请通过一实施例提供如下技术方案:
一种程序调用的优化方法,所述方法包括:
将原函数与目标函数所对应的本地代码进行链接;
将所述原函数所在栈的第一目标参数调整为预设的替换函数所对应的参数,以执行所述替换函数;
在执行完所述替换函数之后,将所述替换函数所在栈的第二目标参数调整为所述目标函数对应的本地代码所对应的参数,以跳转执行所述目标函数所对应的本地代码。
优选地,所述将原函数与目标函数所对应的本地代码进行链接之前,还包括:
判断所述目标函数是否存在对应的本地代码;
若否,则根据所述目标函数,编译所述目标函数对应的本地代码。
优选地,所述根据所述目标函数,编译所述目标函数对应的本地代码,包括:
判断所述目标函数是否为桥函数;
若是,则根据所述桥函数,编译所述桥函数对应的本地代码。
优选地,所述根据所述目标函数,编译所述目标函数对应的本地代码,包括:
将所述本地代码的入口点调整为执行对所述第二目标参数的调整之后的跳转点。
优选地,所述将原函数与目标函数所对应的本地代码进行链接,包括:
在虚拟机中调用编译器,将原函数与目标函数所对应的本地代码进行链接。
优选地,所述将所述原函数所在栈的第一目标参数调整为预设的替换函数所对应的参数,包括:
根据预设的第一汇编代码,将所述原函数所在栈的第一目标参数调整为预设的替换函数所对应的参数。
优选地,所述将所述替换函数所在栈的第二目标参数调整为所述目标函数对应的本地代码所对应的参数,包括:
根据预设的第二汇编代码,将所述替换函数所在栈的第二目标参数调整为所述目标函数对应的本地代码所对应的参数。
优选地,所述将所述原函数所在栈的第一目标参数调整为预设的替换函数所对应的参数,以执行所述替换函数之前,还包括:
采用勾子函数勾取所述目标函数,以使原函数跳转至替换函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811581212.8/2.html,转载请声明来源钻瓜专利网。