[发明专利]功能扩展方法、装置、电子设备及计算机可读存储介质有效
申请号: | 201910920216.2 | 申请日: | 2019-09-26 |
公开(公告)号: | CN110737637B | 公开(公告)日: | 2022-12-16 |
发明(设计)人: | 高少东 | 申请(专利权)人: | 抖音视界有限公司 |
主分类号: | G06F16/17 | 分类号: | G06F16/17;G06F8/30 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 王思超 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 功能 扩展 方法 装置 电子设备 计算机 可读 存储 介质 | ||
本公开实施例公开了一种功能扩展方法、装置、电子设备及计算机可读存储介质,能够提高功能扩展的安全性,包括:当对目标功能函数进行扩展时,在第一命名空间内创建扩展功能函数,扩展功能函数的名称与目标功能函数的名称相同,目标功能函数为待扩展的功能函数,目标功能函数的名称处于第二命名空间;在扩展功能函数中,调用目标功能函数的副本函数,对目标功能函数的副本函数的调用结果进行扩展,完成扩展功能函数的方法设定,目标功能函数的副本函数的方法设定为对目标功能函数的调用,目标功能函数的副本函数对第一命名空间可见;当在第一命名空间中读取到目标功能函数的名称时,对应执行扩展功能函数中设定的方法,实现目标功能函数的扩展。
技术领域
本公开涉及软件工程领域,尤其涉及一种功能扩展方法及装置、计算机可读存储介质。
背景技术
目前,钩子编程(hooking)是一种通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的技术。在钩子编程中,处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。然而,在静态语言,如Swift语言中进行钩子编程时,由于Swift语言中静态方法函数的内存地址通常是在编译时期就确定的,因此对目标函数强行修改内存地址进行扩展容易引起系统崩溃,存在功能扩展不安全的问题。
发明内容
本公开实施例提供一种功能扩展方法、装置、电子设备及计算机可读存储介质。
第一方面,本公开实施例提供了一种功能扩展方法,包括:
当对目标功能函数进行扩展时,在第一命名空间内创建扩展功能函数,所述扩展功能函数的名称与所述目标功能函数的名称相同,所述目标功能函数为待扩展的功能函数,所述目标功能函数的名称处于第二命名空间;
在所述扩展功能函数中,调用目标功能函数的副本函数,并对所述目标功能函数的副本函数的调用结果进行扩展,完成所述扩展功能函数的方法设定,所述目标功能函数的副本函数的方法设定为对所述目标功能函数的调用,所述目标功能函数的副本函数对所述第一命名空间可见;
当在所述第一命名空间中读取到所述目标功能函数的名称时,对应执行所述扩展功能函数中设定的方法,实现对所述目标功能函数的扩展。
上述方案中,所述当在所述第一命名空间中读取到所述目标功能函数的名称时,对应执行所述扩展功能函数中设定的方法,实现对所述目标功能函数的扩展,包括:
当在所述第一命名空间中读取到所述目标功能函数的名称时,优先调用第一命名空间中与所述目标功能函数同名的所述扩展功能函数;执行所述扩展功能函数设定的方法,得到扩展功能函数的执行结果,实现对所述目标功能函数的扩展。
上述方案中,所述目标功能函数的副本函数对所述第一命名空间可见,包括:
在所述第一命名空间的内部创建目标功能函数的副本函数,所述第一命名空间的内部创建的功能函数默认对所述第一命名空间可见。
上述方案中,所述目标功能函数的副本函数对所述第一命名空间可见,包括:
在第三命名空间内创建所述目标功能函数的副本函数;
使所述第三命名空间包含的全部功能函数的名称对所述第一命名空间可见。
上述方案中,所述在第一命名空间内创建扩展功能函数,包括:
在所述第一命名空间中创建所述目标功能函数的类型的所述扩展功能函数,并用所述目标功能函数的名称命名所述扩展功能函数。
上述方案中,所述在所述扩展功能函数中,调用目标功能函数的副本函数,并对所述目标功能函数的副本函数的调用结果进行扩展,完成所述扩展功能函数的方法设定,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于抖音视界有限公司,未经抖音视界有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910920216.2/2.html,转载请声明来源钻瓜专利网。