本发明涉及计算机领域,特别涉及一种非根权限挂钩java方法的方法与装置、电子设备及存储介质。
背景技术:
1、常见的java方法hook(挂钩)方案比如xposed、frida等,需要root(根)权限,甚至需要重新刷机才能运行,但用户终端基本上都是没有root权限的,这样现有的hook方案在用户终端上就不适用。
2、因此,如何提供一种适用于用户终端的不依赖root权限的hook java方法的方案,成为亟待解决的技术问题。
技术实现思路
1、针对现有技术存在的技术问题,本申请实施例提供一种非根权限挂钩java方法的方法与装置、电子设备及存储介质。
2、第一方面,本申请实施例提供了一种非根权限挂钩java方法的方法,包括:
3、在第一java方法执行时,通过调用钩子函数跳转到第二java方法,其中,机器代码执行方式下第一java方法的代码执行入口地址为钩子函数的地址,钩子函数通过内联钩子inline hook的方式实现;
4、通过执行第二java方法调用第三java方法,其中,第三java方法的调用结果与第一java方法原本的执行结果不同。
5、第二方面,本申请实施例还提供了一种非根权限挂钩java方法的装置,包括:
6、跳转单元,用于在第一java方法执行时,通过调用钩子函数跳转到第二java方法,其中,机器代码执行方式下第一java方法的代码执行入口地址为钩子函数的地址,钩子函数通过内联钩子inline hook的方式实现;
7、调用单元,用于通过执行第二java方法调用第三java方法,其中,第三java方法的调用结果与第一java方法原本的执行结果不同。
8、第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的非根权限挂钩java方法的方法的步骤。
9、第四方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面所述的非根权限挂钩java方法的方法的步骤。
10、综上,本申请实施例提供的非根权限挂钩java方法的方法与装置、电子设备及存储介质,在第一java方法执行时,通过调用钩子函数跳转到第二java方法,并通过执行第二java方法调用第三java方法,也就是说将第二java方法作为跳转方法,将第三java方法作为替换方法,在第一java方法执行时,通过跳转方法跳转到替换方法的代码处执行替换方法,而由于跳转到跳转方法所依赖的钩子函数通过内联钩子inline hook的方式实现,这种实现在本进程内实现,不需要root权限,因而该hook java方法的方案不依赖root权限,适用于用户终端。
1.一种非根权限挂钩java方法的方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述通过调用钩子函数跳转到第二java方法,包括:
3.如权利要求1或2所述的方法,其特征在于,第三java方法的调用结果包括游戏安装包的数字签名。
4.如权利要求1或2所述的方法,其特征在于,第三java方法的调用结果包括第三java方法调用第四java方法得到的调用结果,其中,第四java方法和第一java方法对应的原始方法的artmethod结构体相同。
5.一种非根权限挂钩java方法的装置,其特征在于,包括:
6.如权利要求5所述的装置,其特征在于,所述跳转单元,具体用于:
7.如权利要求5或6所述的装置,其特征在于,第三java方法的调用结果包括游戏安装包的数字签名。
8.如权利要求5或6所述的装置,其特征在于,第三java方法的调用结果包括第三java方法调用第四java方法得到的调用结果,其中,第四java方法和第一java方法对应的原始方法的artmethod结构体相同。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至4任一项所述的非根权限挂钩java方法的方法的步骤。
10.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至4任一项所述的非根权限挂钩java方法的方法的步骤。