[发明专利]软件的函数修改方法有效
申请号: | 201210362533.5 | 申请日: | 2012-09-26 |
公开(公告)号: | CN103677790A | 公开(公告)日: | 2014-03-26 |
发明(设计)人: | 侯健 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 深圳翼盛智成知识产权事务所(普通合伙) 44300 | 代理人: | 欧阳启明 |
地址: | 518000 广东省深*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 函数 修改 方法 | ||
【技术领域】
本发明涉及软件技术领域,特别是涉及一种软件的函数修改方法。
【背景技术】
随着各种软件的不断增多,客户端对软件功能的要求越来越高。
以函数Hook技术为例,通过Hook技术,可修改函数的二进制编码,从而修改函数,进而达到修改软件的目的。譬如可通过Hook技术关闭原函数、修改原函数,或者进行软件的调试、重建等。
而现有的Hook技术,需要通过修改编码来修改原函数,在调用原函数时,需调用一个劫持者提供的替代函数。为了保证劫持过程中函数的栈平衡,需要原函数和替代函数的函数传入参数必须完全一致,这样就需要针对不同的原函数,编写针对性的替代函数。
综上,如何解决现有技术中在修改软件中函数时,需针对每一原函数编写一相同的替代函数,导致效率低下,成本较高的技术问题,是软件技术领域研究的方向之一。
【发明内容】
本发明的一个目的在于提供一种软件的函数修改方法,以解决现有技术中在修改软件中函数时,需针对每一原函数编写一相同的替代函数,导致效率低下,成本较高的技术问题。
为解决上述技术问题,本发明构造了一种软件的函数修改方法,包括以下步骤:
获取软件运行空间中的原函数签名;
按照所述原函数签名生成一替代函数,其中所述替代函数的签名中包括替代标识;
将所述替代函数中非通用类型的特征转换为通用类型的特征,其中在该通用类型的特征下,所述替代函数可适用于任意函数;
将转换后的替代函数加载至软件运行空间;
按照所述替代函数执行软件。
在本发明一实施例中:获取软件运行空间中的原函数签名的步骤具体包括:
获取配置文件中的原函数签名列表,并判断原函数的签名对应的原函数是否存在于运行空间中,若是,则获取软件运行空间中的原函数签名;其中所述原函数签名列表中包括有原函数的签名。
在本发明一实施例中:将转换后的替代函数加载至软件运行空间的步骤具体包括:
将转换后的替代函数编译成替代机器码,并将该替代机器码加载到软件运行空间。
在本发明一实施例中:按照所述替代函数执行软件的步骤具体包括:
将原函数的开始部分的机器码,修改为跳转指令到所述替代机器码,并按照所述替代机器码执行软件。
在本发明一实施例中:将替换后的替代函数加载至软件的运行空间的步骤之后,所述方法还包括以下步骤:
记录加载到运行空间中的替代函数的地址。
在本发明一实施例中:获取配置文件中的原函数签名列表的步骤之前,所述方法还包括以下步骤:
预先在原函数的运行空间中设置启动器,该启动器用于将所述替代函数加载至软件的运行空间中。
在本发明一实施例中:将所述替代函数中非通用类型的特征替换为通用类型的特征的步骤具体包括:
若所述原函数的签名中有类型指针,则将该类型指针替换为通用类型指针void*:
在本发明一实施例中:将所述替代函数中非通用类型的特征替换为通用类型的特征的步骤具体包括:
若所述原函数的签名为一C++函数,则将所述原函数的签名中的“:”替换为_,并在所述替代函数签名的参数前添加一个指针参数。
在本发明一实施例中:将替换后的替代函数加载至软件的运行空间中的步骤具体包括:
通过编译器中的应用程序编程接口将替代函数的符号导入到替代函数的编译过程。
在本发明一实施例中:将替换后的替代函数加载至软件的运行空间中的步骤具体包括:
通过编译器将替代函数保存为一个.c文件,同时将该.c文件编译成一个动态链接库,之后通过应用程序编程接口将上述动态链接库导入到软件的运行空间中。
在本发明一实施例中:按照所述原函数签名生成一替代函数签名时,还包括以下步骤:生成信息获取编码用于统计客户端的信息。
相对于现有技术,本发明在获取软件运行空间中的原函数签名后,按照原函数签名生成一替代函数签名,并将替代函数签名中非通用类型的特征转换为通用类型的特征,其中在该通用类型的特征下,替代函数签名可适用于任意函数,之后将转换后的替代函数加载至软件运行空间,并按照替代函数执行软件。显然本发明无需针对每一原函数编写一相同的替代函数即可修改各种类型的原函数,不仅效率高,而且成本较低。
为让本发明的上述内容能更明显易懂,下文特举优选实施例,并配合所附图式,作详细说明如下:
【附图说明】
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210362533.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:气相常压吡啶光氯化动力学研究装置
- 下一篇:电枢