【技术实现步骤摘要】
本专利技术属于计算机
,尤其涉及程序的功能变更方法及装置。
技术介绍
通过C/C++等编程语言编写的程序,在经过预处理、编译、汇编、链接等编译过程之后生成可执行文件,而程序的运行即是对可执行文件的运行。然而在现阶段,一旦程序编译完成,其程序功能是不能发生改变的,若要变更程序功能,只能对程序的源代码进行修改,并重复上述预处理、编译、汇编、链接的编译过程,生成新的可执行文件以重新运行,实现过程复杂。
技术实现思路
有鉴于此,本专利技术实施例提供了程序的功能变更方法及装置,旨在解决现有技术在程序编译完成之后无法改变其程序功能的问题。第一方面,提供了一种程序的功能变更方法,包括:接收函数替换请求和替换函数,所述函数替换请求用于将程序的源代码中的目标函数变更为所述替换函数;将所述替换函数编译为临时动态库后获取所述替换函数对应的函数地址,将所述替换函数对应的函数地址与所述目标函数关联后写入预设的全局符号表;在所述程序的运行过程中,执行所述目标函数 ...
【技术保护点】
一种程序的功能变更方法,其特征在于,包括:接收函数替换请求和替换函数,所述函数替换请求用于将程序的源代码中的目标函数变更为所述替换函数;将所述替换函数编译为临时动态库后获取所述替换函数对应的函数地址,将所述替换函数对应的函数地址与所述目标函数关联后写入预设的全局符号表;在所述程序的运行过程中,执行所述目标函数之前,通过所述预设的全局符号表获取所述替换函数对应的函数地址;将所述目标函数的入口变更为所述替换函数对应的函数地址,执行所述替换函数,返回函数值。
【技术特征摘要】
1.一种程序的功能变更方法,其特征在于,包括:
接收函数替换请求和替换函数,所述函数替换请求用于将程序的源代码中
的目标函数变更为所述替换函数;
将所述替换函数编译为临时动态库后获取所述替换函数对应的函数地址,
将所述替换函数对应的函数地址与所述目标函数关联后写入预设的全局符号表;
在所述程序的运行过程中,执行所述目标函数之前,通过所述预设的全局
符号表获取所述替换函数对应的函数地址;
将所述目标函数的入口变更为所述替换函数对应的函数地址,执行所述替
换函数,返回函数值。
2.如权利要求1所述的方法,其特征在于,所述接收函数替换请求和替换
函数包括:
接收来自运行所述程序的终端的本机进程或者远程进程的函数替换请求和
替换函数。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述程序编译前,在所述程序的源代码中每个函数的入口分别插入预处
理宏;
所述在所述程序的运行过程中,执行所述目标函数之前,通过所述预设的
全局符号表获取所述替换函数对应的函数地址包括:
在所述程序的运行过程中,执行所述目标函数之前,执行所述预处理宏,
以在所述预设的全局符号表中查找出所述目标函数存在所述替换函数;
在所述预设的全局符号表中获取所述替换函数对应的函数地址。
4.如权利要求1所述的方法,其特征在于,所述接收函数替换请求和替换
函数包括:
在所述程序启动运行之后,创建用于接收函数替换请求和替换函数的线程;
通过所述线程,在所述程序的运行过程中接收函数替换请求和替换函数。
5.如权利要求1所述的方法,其特征在于,在所述接收函数替换请求和替
换函数之前,所述方法还包括:
创建用于接收函数替换请求和替换函数,以及用于保存所述预设的全局符
号表的核心库;
在所述程序的编译过程中,链接所述核心库。
6.一种程...
【专利技术属性】
技术研发人员:丁鹏,韩鹏,
申请(专利权)人:TCL集团股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。