函数替换方法、可读存储介质、程序产品和电子设备与流程

文档序号:38072303发布日期:2024-05-21 20:07阅读:47来源:国知局
函数替换方法、可读存储介质、程序产品和电子设备与流程

本技术涉及计算机,特别涉及一种函数替换方法、可读存储介质、程序产品和电子设备。


背景技术:

1、在计算机领域,为了能够对应用程序的功能进行扩展、修改、监控、更新等,通常需要对应用程序中的函数进行替换,例如通过钩子(hook)技术将应用程序中原函数的入口地址修改为新函数的入口地址,以实现应用程序通过原函数的调用方法即可调用到新函数。

2、但是,由于不同的操作系统、应用程序会采用不同的编程语言编写,而不同的语言编写的应用程序在不同的运行环境中的运行方式也不相同。从而针对为java运行环境、c++运行环境等的函数替换方法并不能适用于javascript运行环境。因此,如何实现javascript运行环境中函数的替换是一个亟需解决的问题。


技术实现思路

1、有鉴于此,本技术实施例提供了一种函数替换方法、可读存储介质、程序产品和电子设备。javascript运行环境中要进行函数替换的目标应用程序运行时,先生成javascript运行环境中的各个函数的函数标识和各个函数的调用入口的对应关系,然后在对应关系中,将目标函数的调用入口替换为新函数的调用入口,进而目标应用程序在调用目标函数时,通过目标函数的函数标识从修改后的对应关系中查询到的调用入口为新函数的调用入口,进而目标应用程序实际调用的是新函数。如此,可以实现javascript运行环境中函数的替换。

2、第一方面,本技术实施例提供了一种函数替换方法,应用于电子设备,包括:检测到函数替换请求,函数替换请求中包括第一函数的第一调用入口和第二函数的函数标识;生成电子设备的javascript运行环境所存储的函数的函数标识和对应的调用入口的对应关系;根据第二函数的函数标识从对应关系中查询到第二函数的第二调用入口,并将对应关系中的第二调用入口替换为第一调用入口;检测到第一应用程序对第二函数的调用请求,向第一应用程序提供第一调用入口。

3、也就是说,可以通过先生成javascript运行环境中的函数和对应的调用入口的对应关系,然后将对应关系中第二函数的调用入口替换为第一函数的调用入口,并且在第一应用程序调用第二函数时,将第一函数的第一调用入口提供给第一应用程序,从而实现javascript运行环境中函数的替换,以便于电子设备可以实现对第一应用程序的行为监控、热更新、故障注入等。

4、在上述第一方面的一种可能实现中,上述函数替换请求由第二应用程序发送,并且第一函数用于记录第一应用程序对第二函数的调用情况。

5、在一些实施方式中,第二应用程序例如可以是下文中的监测应用程序,从而可以实现对第一应用程序调用第二函数的情况进行记录。

6、在上述第一方面的一种可能实现中,上述方法还包括:第一函数被第一应用程序调用时,记录并向第二应用程序发送第一应用程序对第二函数的调用情况。

7、在上述第一方面的一种可能实现中,上述函数替换请求由第三应用程序发送,第一应用程序包括多个子应用程序,并且第一函数用于向第一应用程序提供第一子应用程序的运行条件,其中,第一子应用程序为多个子应用程序中的任意一个。

8、在一些实施方式中,第三应用程序例如可以是下文中的测试应用,从而可以通过第一函数来提供第一子应用程序(例如下文中的目标应用程序分支)的运行条件,以便于测试第一子应用程序的功能。

9、在上述第一方面的一种可能实现中,上述方法还包括:第一函数被第一应用程序调用时,向第一应用程序提供第一子应用程序的运行条件,记录第一子应用程序的运行数据并发送给第三应用程序。

10、在上述第一方面的一种可能实现中,上述函数替换请求由第一服务器发送,并且第一函数为针对第二函数的热更新函数。

11、在上述第一方面的一种可能实现中,上述生成电子设备的javascript运行环境所存储的函数的函数标识和对应的调用入口的对应关系,包括:

12、通过第三函数获取javascript运行环境中的系统库对象的名称、各系统库对象所包括的函数的名称以及各函数的调用入口;

13、通过第三函数将各系统库对象的名称、各系统库对象所包括的函数的函数标识,以及各函数的调用入口间的对应关系存储在电子设备的内存中。

14、在一些实施方式中,第三函数可以是下文中的引用关系生成函数。

15、在上述第一方面的一种可能实现中,上述函数替换请求中还包括第二函数所属的第一系统库对象的第一名称;并且根据第二函数的函数标识从对应关系中查询到第二函数的第二调用入口,并将对应关系中的第二调用入口替换为第一调用入口,包括:根据第一名称在对应关系中查询到第一系统库对象;根据第二函数的函数标识,在第一系统库对象所包括的函数与各函数的调用入口中,查询到第二函数对应的第二调用入口,并将第二调用入口替换为第一调用入口。

16、在一些实施方式中,可以由一个预定义的第四函数,例如下文中的替换函数registerhookmodule,来根据第一名称在对应关系中查询到第一系统库对象;根据第二函数的函数标识,在第一系统库对象所包括的函数与各函数的调用入口中,查询到第二函数对应的第二调用入口,并将第二调用入口替换为第一调用入口。

17、在上述第一方面的一种可能实现中,上述向所述第一应用程序提供所述第一调用入口,包括:通过第二函数的函数标识,从对应关系中查询到第一调用入口并提供给第一应用程序。

18、在上述第一方面的一种可能实现中,上述方法还包括:检测到恢复函数请求,将对应关系中的所述第一调用入口恢复为第二调用入口。

19、在上述第一方面的一种可能实现中,是通过第四函数将对应关系中的所述第一调用入口恢复为第二调用入口。

20、在一些实施方式中,第五函数可以为下文中的卸载函数。

21、在一些实施方式中,可以在不再监测第一应用程序对第二函数的调用情况时,或者不再对第二函数进行热更新,或者不再测试第一子应用程序时,检测到恢复函数请求,将对应关系中的第一调用入口恢复为第二调用入口。

22、在上述第一方面的一种可能实现中,在生成电子设备的javascript运行环境所存储的函数的函数标识和对应的调用入口的对应关系前,上述方法还包括:加载javascripthook框架,javascript hook框架中包括上述第三函数、第四函数、第五函数。

23、第二方面,本技术实施例提供了一种计算机可读存储介质,可读存储介质中包括指令,指令被电子设备执行时,使电子设备实现上述第一方面以及上述第一方面的任意一种可能实现提供的方法。

24、第三方面,本技术实施例提供了一种电子设备,该电子设备包括:存储器,存储器中存储有指令;至少一个处理器,用于执行指令以使电子设备实现上述第一方面以及上述第一方面的任意一种可能实现提供的方法。

25、第四方面,本技术实施例提供了一种计算机程序产品,该程序产品在电子设备上运行时,使电子设备实现上述第一方面以及上述第一方面的任意一种可能实现提供的方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1