函数调用方法、装置、电子设备及可读存储介质制造方法及图纸

技术编号:38713690 阅读:12 留言:0更新日期:2023-09-08 14:56
本申请一个或多个实施例提供一种函数调用方法、装置、电子设备及可读存储介质,应用于电子设备,该方法包括:获取与目标应用程序的程序代码对应的WebAssembly字节码;加载与目标应用程序的程序代码对应的WebAssembly字节码,基于所述WebAssembly字节码的自定义段包含的至少一个函数的函数标识,从所述WebAssembly字节码的函数段解析并存储所述至少一个函数的函数地址;响应于针对所述目标应用程序的业务处理请求,获取与所述业务处理请求对应的至少一个函数的函数地址,并基于所述函数地址调用所述函数,以完成所述业务处理。以完成所述业务处理。以完成所述业务处理。

【技术实现步骤摘要】
函数调用方法、装置、电子设备及可读存储介质


[0001]本申请一个或多个实施例涉及计算机
,尤其涉及一种函数调用方法、装置、电子设备及可读存储介质。

技术介绍

[0002]WebAssembly是一种低级的类汇编语言,具有紧凑的二进制格式,并可以作为各种高级语言(如Rust、C++、C)的公共编译目标。
[0003]基于各种高级语言(如Rust、C++、C)编写的应用,可以被编译成为WebAssembly应用模块,这种WebAssembly应用模块的字节码通过在资源受限设备的片内操作系统上的WebAssembly虚拟机进行解释执行。
[0004]WebAssembly应用模块以二进制文件的形式存在,其中包含类型段、导入段、函数段、表段、内存段、全局段、导出段、起始段、元素段、代码段、数据段和自定义段。
[0005]通常,一个WebAssembly应用模块可以供外部调用的所有函数会在导出段中,但是导出段是外部可见的,所以从安全的角度来看,如果应用模块中的函数都被导出的话,存在一定的安全威胁。

技术实现思路

[0006]本申请一个或多个实施例提供技术方案如下:本申请提供一种函数调用方法,所述方法应用于电子设备,所述方法包括:获取与目标应用程序的程序代码对应的WebAssembly字节码;所述WebAssembly字节码的自定义段包含所述目标应用程序的程序代码中至少一个函数的函数标识;加载与目标应用程序的程序代码对应的WebAssembly字节码,基于所述WebAssembly字节码的自定义段包含的至少一个函数的函数标识,从所述WebAssembly字节码的函数段解析并存储所述至少一个函数的函数地址;响应于针对所述目标应用程序的业务处理请求,获取与所述业务处理请求对应的至少一个函数的函数地址,并基于所述函数地址调用所述函数,以完成所述业务处理。
[0007]可选的,所述方法还包括:获取目标应用程序的程序代码;确定所述程序代码中至少一个函数的函数标识,将所述程序代码编译为WebAssembly字节码,并在编译过程中将所述至少一个函数的函数标识添加至WebAssembly字节码的自定义段。
[0008]可选的,将所述至少一个函数的函数标识添加至WebAssembly字节码的自定义段,包括:将所述至少一个函数的函数标识按顺序添加至WebAssembly字节码的自定义段;所述函数标识的顺序与所述WebAssembly字节码的函数段中至少一个函数的函数索引的顺序相同。
[0009]可选的,所述基于所述WebAssembly字节码中包含的至少一个函数的函数标识,解析并存储所述至少一个函数的函数地址,包括:按照所述WebAssembly字节码的自定义段包含的至少一个函数的函数标识,确定与所述函数标识对应的函数索引;基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并存储所述函数地址。
[0010]可选的,所述电子设备包括用于存储所述函数地址的函数注册表;基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并存储所述函数地址,包括:基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并将所述函数地址存储至所述函数注册表。
[0011]可选的,所述将所述函数地址存储至所述函数注册表,包括:将所述函数地址按顺序存储至所述函数注册表;所述函数地址的顺序与所述WebAssembly字节码的自定义段中函数标识的顺序相同。
[0012]可选的,所述业务处理请求包括应用注册请求、应用选择请求、应用弃选请求、应用指令分发请求、应用多选请求、应用间共享请求、应用去注册请求。
[0013]可选的,所述函数包括通过不同参数进行区分不同的业务处理请求的相同函数标识的至少一个函数;或,所述函数包括与不同业务处理请求对应的不同函数标识的至少一个函数。
[0014]可选的,响应于针对所述目标应用程序的业务处理请求,获取与所述业务处理请求对应的至少一个函数的函数地址,并基于所述函数地址调用所述函数,以完成所述业务处理,包括:当所述函数的函数标识相同时,响应于针对所述目标应用程序的业务处理请求,基于所述业务处理请求的请求参数,确定与所述请求参数对应的函数,并基于所述函数的函数地址调用所述函数;当所述函数的函数标识不同时,响应于针对所述应用的业务处理请求,确定与所述业务处理请求中包含的函数标识对应的函数,并基于所述函数的函数地址调用所述函数。
[0015]可选的,所述方法还包括:响应于针对所述目标应用程序的应用注册请求,调用与所述目标应用程序对应的系统回调函数,从WebAssembly字节码的函数段解析并存储所述至少一个函数的函数地址。
[0016]本申请还提供一种函数调用装置,所述装置应用于电子设备,所述装置包括:字节码获取单元,用于获取与目标应用程序的程序代码对应的WebAssembly字节码;所述WebAssembl字节码的自定义段包含所述目标应用程序的程序代码中至少一个函数的函数标识;字节码加载单元,用于加载与目标应用程序的程序代码对应的WebAssembly字节码,基于所述WebAssembly字节码的自定义段包含的至少一个函数的函数标识,从所述WebAssembly字节码的函数段解析并存储所述至少一个函数的函数地址;业务处理单元,用于响应于针对所述目标应用程序的业务处理请求,获取与所述
业务处理请求对应的至少一个函数的函数地址,并基于所述函数地址调用所述函数,以完成所述业务处理。
[0017]可选的,所述装置还包括编译单元,用于获取目标应用程序的程序代码;确定所述程序代码中至少一个函数的函数标识,将所述程序代码编译为WebAssembly字节码,并在编译过程中将所述至少一个函数的函数标识添加至WebAssembly字节码的自定义段。
[0018]可选的,所述编译单元进一步用于将所述至少一个函数的函数标识按顺序添加至WebAssembly字节码的自定义段;所述函数标识的顺序与所述WebAssembly字节码的函数段中至少一个函数的函数索引的顺序相同。
[0019]可选的,所述字节码加载单元,进一步用于按照所述WebAssembly字节码的自定义段包含的至少一个函数的函数标识,确定与所述函数标识对应的函数索引;基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并存储所述函数地址。
[0020]可选的,所述电子设备包括用于存储所述函数地址的函数注册表;所述字节码加载单元,进一步用于基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并将所述函数地址存储至所述函数注册表。可选的,所述字节码加载单元,进一步用于将所述函数地址按顺序存储至所述函数注册表;所述函数地址的顺序与所述WebAssembly字节码的自定义段中函数标识的顺序相同。
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种函数调用方法,所述方法应用于电子设备,所述方法包括:获取与目标应用程序的程序代码对应的WebAssembly字节码;所述WebAssembl字节码的自定义段包含所述目标应用程序的程序代码中至少一个函数的函数标识;加载与目标应用程序的程序代码对应的WebAssembly字节码,基于所述WebAssembly字节码的自定义段包含的至少一个函数的函数标识,从所述WebAssembly字节码的函数段解析并存储所述至少一个函数的函数地址;响应于针对所述目标应用程序的业务处理请求,获取与所述业务处理请求对应的至少一个函数的函数地址,并基于所述函数地址调用所述函数,以完成所述业务处理。2.根据权利要求1所述的方法,所述方法还包括:获取目标应用程序的程序代码;确定所述程序代码中至少一个函数的函数标识,将所述程序代码编译为WebAssembly字节码,并在编译过程中将所述至少一个函数的函数标识添加至WebAssembly字节码的自定义段。3.根据权利要求2所述的方法,将所述至少一个函数的函数标识添加至WebAssembly字节码的自定义段,包括:将所述至少一个函数的函数标识按顺序添加至WebAssembly字节码的自定义段;所述函数标识的顺序与所述WebAssembly字节码的函数段中至少一个函数的函数索引的顺序相同。4.根据权利要求3所述的方法,所述基于所述WebAssembly字节码中包含的至少一个函数的函数标识,解析并存储所述至少一个函数的函数地址,包括:按照所述WebAssembly字节码的自定义段包含的至少一个函数的函数标识,确定与所述函数标识对应的函数索引;基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并存储所述函数地址。5.根据权利要求4所述的方法,所述电子设备包括用于存储所述函数地址的函数注册表;基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并存储所述函数地址,包括:基于所述函数索引,从WebAssembly字节码的函数段确定与所述函数索引对应的函数地址,并将所述函数地址存储至所述函数注册表。6.根据权利要求5所述的方法,所述将所述函数地址存储至所述函数注册表,包括:将所述函数地址按顺序存储至所述函数注册表;所述函数地址的顺序与所述WebAssembly字节码的自定义段中函...

【专利技术属性】
技术研发人员:毛云娟高景阳
申请(专利权)人:北京中电华大电子设计有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1