一种程序的运行方法、装置、电子设备及介质制造方法及图纸

技术编号:35900394 阅读:15 留言:0更新日期:2022-12-10 10:36
本发明专利技术公开了一种程序的运行方法、装置、电子设备及介质,运行方法通过获取程序的指针数组,将指针数组中的第一函数指针和第二函数指针进行替换,使第一函数指针和第二函数指针指向的函数与开放源代码存在差异,基于第二函数指针调用第一函数指针的对应函数时,使程序运行使用的对应函数既能保证正常使用,同时具有一定的隐蔽性,若程序被反编译,无法直接从反编译代码中看出程序使用第二函数指针对应函数的调用意图,进而提高了程序运行的安全性。性。性。

【技术实现步骤摘要】
一种程序的运行方法、装置、电子设备及介质


[0001]本申请涉及程序运行的
,尤其涉及一种程序的运行方法、装置、电子设备及介质。

技术介绍

[0002]软件程序使用的安全性一直是各厂商关注的重点,以安卓(Android)系统的程序为例,出于系统使用的安全性考虑,会将系统核心功能核心代码使用开源源码(或称native)的so文件进行开发,目的是so文件的安全性比Java层高,原因在于其破解门槛比java层高,而so文件中,则是使用JNI(Java Native Interface,Java本地接口)来开发,通过JNI可以调用于Java交换的数据、接口、功能等等。但是通过应用发现,该种方式开发的程序易被反编译破解。
[0003]因此,如何提高程序运行的安全性,是目前亟待解决的技术问题。

技术实现思路

[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]为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0042]图1为本专利技术实施例提供的一种程序的运行方法的流程图;
[0043]图2为本专利技术实施例提供的一种程序的运行装置的结构示意图。
具体实施方式
[0044]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术实施例保护的范围。
[0045]目前在安卓系统的JNI中,java层交换数据和核心接口的调用,是通过调用核心系统函数来实现,由于核心系统函数是开源的,其在核心系统函数列表中的位置是固定的,因此通过反编译so文件后,查看系统核心函数调用特征的汇编代码,则可以看出其调用了哪些系统核心函数,再基于系统函数的固定位置,黑色产业可以针对性开发应用工具,直接将所有系统函数的调用进行识别,且具有极大的反编译破解速度,对程序的安全本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序的运行方法,其特征在于,所述方法包括:获取程序的指针数组,其中,所述指针数组中的每个函数指针均指向对应的函数;将所述指针数组中的第一函数指针和第二函数指针进行替换;基于所述第二函数指针调用所述第一函数指针的对应函数,以运行所述程序。2.根据权利要求1所述的程序的运行方法,其特征在于,所述获取程序的指针数组,包括:基于所述程序的开发源码,获得包含所述指针数组的目标结构体;根据所述指针数组中第一函数指针的运行路径,获得与原始函数的功能相同的替换函数,其中,所述原始函数为所述第一函数指针在所述目标结构体中指向的函数;根据所述第一函数指针和所述替换函数对应的第二函数指针,获得所述指针数组。3.根据权利要求2所述的程序的运行方法,其特征在于,所述根据所述指针数组中第一函数指针的运行路径,获得与原始函数的功能相同的替换函数,包括:根据所述第一函数指针在所述目标结构体的创建记录,获得所述运行路径的创建路径;根据所述第一函数指针在所述目标结构体的初始化记录,获得所述运行路径的初始化路径;根据所述第一函数指针在所述目标结构体的调用记录,获得所述运行路径的调用链路径;根据所述创建路径、所述初始化路径和所述调用链路径,在所述开发源码的函数库中确定所述替换函数。4.根据权利要求1所述的程序的运行方法,其特征在于,所述将所述指针数组中的第一函数指针和第二函数指针进行替换,包括:根据所述程序中函数的功能定义,进行函数类别划分;在所述第一函数指针指向函数的所述函数类别中,确定出替换函数和对应的所述第二函数指针;将所述第一函数指针的第一变量和所述第二函数指针的第二变量进行替换。5.根据权利要求4所述的程序的运行方法,其特征在于,所述根据所述程序中函数的功能定义,进行函数类别划...

【专利技术属性】
技术研发人员:周志刚
申请(专利权)人:武汉斗鱼鱼乐网络科技有限公司
类型:发明
国别省市:

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

1