数据处理方法技术

技术编号:39597317 阅读:78 留言:0更新日期:2023-12-03 19:56
本发明专利技术实施例提供一种数据处理方法

【技术实现步骤摘要】
数据处理方法、装置、电子设备及可读介质


[0001]本专利技术实施例涉及计算机
,特别是涉及一种数据处理方法

装置

电子设备及可读介质


技术介绍

[0002]目前,随机指令验证系统得到了越来越广泛的应用

随机指令验证系统中的随机指令序列生成器
(Random Instruction Sequence Generator For Userspace Testing

RISU)
会将指令生成工具生成的随机指令文件在物理机以及模拟器上分别运行,以进行随机指令验证

其中,物理机对应服务端,模拟器对应客户端

具体的,随机指令文件包括随机指令以及位于随机指令前后的非法指令,在运行至非法指令时,会产生异常信号
(
例如,
SIGILL
信号
)。
此时,指令运行工具会将异常信号写入指定结构体中,并通过比对物理机和模拟器中产生的上下文信息是否相等,以实现验证

[0003]现有技术中,在指令验证过程中,如果生成异常信号,需要基于栈指针
(Stack Pointer

SP)
寄存器的寄存器值指向的栈空间执行信号处理函数,并在执行过程中,基于线程指针
(Thread Pointer

TP)
寄存器的寄存器值与内核进行交互,以进行异常处理
。<br/>如果随机指令文件中的随机指令修改了
SP
寄存器和
/

TP
寄存器的值,就会导致信号处理函数无法顺利执行,随机指令验证流程出现异常

因此,往往在随机指令验证过程中会规避使用
SP
寄存器以及
TP
寄存器,导致随机指令验证过程覆盖的寄存器不够全面,进而导致指令验证不够全面


技术实现思路

[0004]本专利技术实施例提供一种数据处理方法

装置

电子设备及可读介质,可以解决现有技术获针对程序的处理效率较低的问题

[0005]为了解决上述问题,本专利技术实施例公开了一种数据处理方法,所述方法包括:
[0006]创建预设的指定信号栈和预设本地存储区;所述预设本地存储区用于预先存储线程指针寄存器的寄存器值;所述指定信号栈用于执行信号处理函数;
[0007]监测到随机指令文件的运行过程中产生异常信号时,在所述指定信号栈中调用并执行所述信号处理函数;所述信号处理函数预先注册至所述指定信号栈,所述信号处理函数用于捕获并处理所述异常信号;
[0008]在所述信号处理函数的执行过程中,从所述预设本地存储区中获取预先存储的线程指针寄存器的寄存器值,并基于所述寄存器值响应所述信号处理函数对应的内核交互,以使所述信号处理函数正常执行

[0009]可选的,所述方法还包括:
[0010]获取所述线程指针寄存器中的原始寄存器值,并保存至所述预设本地存储区中

[0011]可选的,所述方法还包括:
[0012]将所述指定信号栈对应的自定义函数注册为所述信号处理函数,并将所述信号处
理函数的信号处理标识设置为指定标识;
[0013]其中,所述指定标识用于指示使用所述指定信号栈执行所述信号处理函数

[0014]可选的,所述方法还包括:
[0015]为所述指定信号栈创建信号栈指针;所述信号栈指针用于标识所述指定信号栈的地址;
[0016]所述在随机指令文件的运行过程中产生异常信号的情况下,在指定信号栈中执行信号处理函数,包括:
[0017]在所述随机指令文件的运行过程中产生异常信号的情况下,基于所述信号栈指针定位所述指定信号栈,并基于定位到的所述指定信号栈执行所述信号处理函数

[0018]可选的,所述在运行所述随机指令文件之前,创建所述指定信号栈,包括:
[0019]基于预设申请函数申请信号栈空间;
[0020]在申请到的所述信号栈空间中创建大小为指定大小的信号栈,作为所述指定信号栈

[0021]可选的,在所述数据处理方法被客户端执行的情况下,所述信号处理函数为所述客户端的信号处理函数;;所述方法还包括:
[0022]获取在所述指定信号栈中调用以及执行所述第一信号处理函数得到的第一寄存器信息;
[0023]将所述第一寄存器信息发送至客户端

[0024]可选的,在所述数据处理方法被服务端执行的情况下,所述信号处理函数为所述服务端的信号处理函数;
[0025]所述方法还包括:
[0026]获取在所述指定信号栈中调用以及执行所述第二信号处理函数得到的第二寄存器信息;
[0027]接收服务端发送的第一寄存器信息,并将所述第一寄存器信息以及所述第二寄存器进行进行对比,得到对比结果;
[0028]基于所述对比结果,确定待执行操作;所述待执行操作包括继续执行所述随机指令文件中的指令以及退出随机指令验证

[0029]另一方面,本专利技术实施例公开了一种数据处理装置,所述装置包括:
[0030]创建模块,用于创建预设的指定信号栈和预设本地存储区;所述预设本地存储区用于预先存储线程指针寄存器的寄存器值;所述指定信号栈用于执行信号处理函数;
[0031]执行模块,用于监测到随机指令文件的运行过程中产生异常信号时,在所述指定信号栈中调用并执行所述信号处理函数;所述信号处理函数预先注册至所述指定信号栈,所述信号处理函数用于捕获并处理所述异常信号;
[0032]获取模块,用于在所述信号处理函数的执行过程中,从所述预设本地存储区中获取预先存储的线程指针寄存器的寄存器值,并基于所述寄存器值响应所述信号处理函数对应的内核交互,以使所述信号处理函数正常执行

[0033]可选的,所述装置还包括:
[0034]保存模块,用于获取所述线程指针寄存器中的原始寄存器值,并保存至所述预设本地存储区中

[0035]可选的,所述装置还包括:
[0036]注册模块,用于将所述指定信号栈对应的自定义函数注册为所述信号处理函数,并将所述信号处理函数的信号处理标识设置为指定标识;
[0037]其中,所述指定标识用于指示使用所述指定信号栈执行所述信号处理函数

[0038]可选的,所述装置还包括:
[0039]第三创建模块,用于为所述指定信号栈创建信号栈指针;所述信号栈指针用于标识所述指定信号栈的地址;
[0040]所述执行模块,具体用于:
[0041]在所述随机指令文件的运行过程中产生异常信号的情况下,基于所述信号栈指针定位所述指定信号栈,并基于定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据处理方法,其特征在于,所述方法包括:创建预设的指定信号栈和预设本地存储区;所述预设本地存储区用于预先存储线程指针寄存器的寄存器值;所述指定信号栈用于执行信号处理函数;监测到随机指令文件的运行过程中产生异常信号时,在所述指定信号栈中调用并执行所述信号处理函数;所述信号处理函数预先注册至所述指定信号栈,用于捕获并处理所述异常信号;在所述信号处理函数的执行过程中,从所述预设本地存储区中获取预先存储的线程指针寄存器的寄存器值,并基于所述寄存器值响应所述信号处理函数对应的内核交互,以使所述信号处理函数正常执行
。2.
根据权利要求1所述的方法,其特征在于,所述方法还包括:获取所述线程指针寄存器中的原始寄存器值,并保存至所述预设本地存储区中
。3.
根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述指定信号栈对应的自定义函数注册为所述信号处理函数,并将所述信号处理函数的信号处理标识设置为指定标识;其中,所述指定标识用于指示使用所述指定信号栈执行所述信号处理函数
。4.
根据权利要求3所述的方法,其特征在于,所述方法还包括:为所述指定信号栈创建信号栈指针;所述信号栈指针用于标识所述指定信号栈的地址;所述在随机指令文件的运行过程中产生异常信号的情况下,在指定信号栈中执行信号处理函数,包括:在所述随机指令文件的运行过程中产生异常信号的情况下,基于所述信号栈指针定位所述指定信号栈,并基于定位到的所述指定信号栈执行所述信号处理函数
。5.
根据权利要求3所述的方法,其特征在于,所述在运行所述随机指令文件之前,创建所述指定信号栈,包括:基于预设申请函数申请信号栈空间;在申请到的所述信号栈空间中创建大小为指定大小的信号栈,作为所述指定信号栈
。6.
根据权利要求1‑5任一所述的方法,其特征在于,在所述数据处理方法被服务端执行的情况下,所述信号处理函数为所述服务端的第一信号处理函数;所述方法还包括:获取在所述指定信号栈中调用以及执行所述第一信号处理函数得到的第一寄存器信息;将所述第一寄存器信息发送至客户端
。7.
根据权利要求1‑5任一所述的方法,其特征在于,在所述数据处理方法被客户端执行的情况下,所述信号处理函数为所述客户端的第二信号处理函数;所述方法还包括:获取在所述指定信号栈中调用以及执行所述第二信号处理函数得到的第二寄存器信息;接收服务端发送的第一寄存器信息,并将所述第一寄存器信息以及所述第二寄存器进行进行对比,得到对比结果;基于所述对比结果进行分析,确定待执行操作;所述待执行操作包括继续执行所述随机指令文件中的指令以及退出随机指令验证

8.
一种数据处理装置,其特征在于,所述装置包括:创建模块,用于创建预设的指定信号栈和预设本地存储区;所述预设本地存储区用于预先存储线程指针寄存器的寄存器值;所述指定信号栈用于执行信号处理函数;执行模块,用于监测到随机指令文件的运行过程中产生异常信号时,在所述指定信号栈中调用并执行所述信号处理函数;所述信号处理函数预先注册至所述指定信号栈,所述信号处理函数用于捕...

【专利技术属性】
技术研发人员:高松毛碧波
申请(专利权)人:龙芯中科技术股份有限公司
类型:发明
国别省市:

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

1