[发明专利]一种程序的运行方法、装置、电子设备及介质在审
申请号: | 202210958708.2 | 申请日: | 2022-08-10 |
公开(公告)号: | CN115455380A | 公开(公告)日: | 2022-12-09 |
发明(设计)人: | 周志刚 | 申请(专利权)人: | 武汉斗鱼鱼乐网络科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F9/448 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 查薇 |
地址: | 430000 湖北省武汉市东湖新技术开发区软件园东路*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 运行 方法 装置 电子设备 介质 | ||
本发明公开了一种程序的运行方法、装置、电子设备及介质,运行方法通过获取程序的指针数组,将指针数组中的第一函数指针和第二函数指针进行替换,使第一函数指针和第二函数指针指向的函数与开放源代码存在差异,基于第二函数指针调用第一函数指针的对应函数时,使程序运行使用的对应函数既能保证正常使用,同时具有一定的隐蔽性,若程序被反编译,无法直接从反编译代码中看出程序使用第二函数指针对应函数的调用意图,进而提高了程序运行的安全性。
技术领域
本申请涉及程序运行的技术领域,尤其涉及一种程序的运行方法、装置、电子设备及介质。
背景技术
软件程序使用的安全性一直是各厂商关注的重点,以安卓(Android)系统的程序为例,出于系统使用的安全性考虑,会将系统核心功能核心代码使用开源源码(或称native)的so文件进行开发,目的是so文件的安全性比Java层高,原因在于其破解门槛比java层高,而so文件中,则是使用JNI(Java Native Interface,Java本地接口)来开发,通过JNI可以调用于Java交换的数据、接口、功能等等。但是通过应用发现,该种方式开发的程序易被反编译破解。
因此,如何提高程序运行的安全性,是目前亟待解决的技术问题。
发明内容
本发明的一种程序的运行方法、装置、电子设备及介质,能够提高程序运行的安全性。
本发明实施例提供了以下方案:
第一方面,本发明实施例提供了一种程序的运行方法,所述方法包括:
获取程序的指针数组,其中,所述指针数组中的每个函数指针均指向对应的函数;
将所述指针数组中的第一函数指针和第二函数指针进行替换;
基于所述第二函数指针调用所述第一函数指针的对应函数,以运行所述程序。
在一种可选的实施例中,所述获取程序的指针数组,包括:
基于所述程序的开发源码,获得包含所述指针数组的目标结构体;
根据所述指针数组中第一函数指针的运行路径,获得与原始函数的功能相同的替换函数,其中,所述原始函数为所述第一函数指针在所述目标结构体中指向的函数;
根据所述第一函数指针和所述替换函数对应的第二函数指针,获得所述指针数组。
在一种可选的实施例中,所述根据所述指针数组中第一函数指针的运行路径,获得与原始函数的功能相同的替换函数,包括:
根据所述第一函数指针在所述目标结构体的创建记录,获得所述运行路径的创建路径;
根据所述第一函数指针在所述目标结构体的初始化记录,获得所述运行路径的初始化路径;
根据所述第一函数指针在所述目标结构体的调用记录,获得所述运行路径的调用链路径;
根据所述创建路径、所述初始化路径和所述调用链路径,在所述开发源码的函数库中确定所述替换函数。
在一种可选的实施例中,所述将所述指针数组中的第一函数指针和第二函数指针进行替换,包括:
根据所述程序中函数的功能定义,进行函数类别划分;
在所述第一函数指针指向函数的所述函数类别中,确定出替换函数和对应的所述第二函数指针;
将所述第一函数指针的第一变量和所述第二函数指针的第二变量进行替换。
在一种可选的实施例中,所述根据所述程序中函数的功能定义,进行函数类别划分,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼鱼乐网络科技有限公司,未经武汉斗鱼鱼乐网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210958708.2/2.html,转载请声明来源钻瓜专利网。