CN109635589B - So文件调用的方法及装置 - Google Patents
So文件调用的方法及装置 Download PDFInfo
- Publication number
- CN109635589B CN109635589B CN201811595257.0A CN201811595257A CN109635589B CN 109635589 B CN109635589 B CN 109635589B CN 201811595257 A CN201811595257 A CN 201811595257A CN 109635589 B CN109635589 B CN 109635589B
- Authority
- CN
- China
- Prior art keywords
- function
- enumeration
- file
- called
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 176
- 230000006870 function Effects 0.000 claims description 183
- 230000004048 modification Effects 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 11
- 230000003068 static effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000005236 sound signal Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种SO文件调用的方法,包括:定义枚举量与函数列表一一对应的枚举类型E;定义类型为枚举类型E的全局状态变量S;在接收到函数调用命令时,先获取在执行流程中当前函数的上一函数对应枚举量的值S1,再判断S1与全局状态变量S的值是否相等;若是,则将当前函数对应的枚举变量赋值给全局状态变量S,并执行函数调用命令调用当前函数;若否,则终止应用程序。本申请所提供的技术方案能够防止攻击者直接利用SO文件提供的接口进行用户数据窃取,保护SO文件不被非法调用。本申请同时还提供了一种SO文件调用的装置、电子设备及计算机可读存储介质,具有上述有益效果。
Description
技术领域
本申请涉及SO文件调用领域,具体地,涉及一种SO文件调用的方法、装置、电子设备及计算机可读存储介质。
背景技术
随着智能手机的普及,各类应用程序逐渐进入人们的工作、生活、娱乐,金融和支付相关的应用程序也被广使用。这也带来了安全问题,攻击者可以通过分析应用程序的代码,查找漏洞,制作病毒,窃取用户的信息。对应用程序代码的有效保护可以很好的提高应用程序的安全性,应用开发者为了提高软件的安全性,往往把应用程序核心的逻辑用native层实现,编译成共享对象(Shared Object,SO)文件,因此对SO文件进行保护能有效的保护应用程序的安全。
相关SO文件保护的技术主要是对SO文件进行整体或局部加密,待加载到内存时再对其进行解密,以防止攻击者通过静态分析或动态调试的方式分析SO文件的程序逻辑,以确保应用程序的安全。
然而,该技术的缺陷在于,攻击者不用完全清楚应用程序的处理逻辑,可以直接通过调用SO文件的方法,达到获取应用程序数据或破坏应用程序的目的。
因此,如何保护SO文件不被非法调用是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种SO文件调用的方法、装置、电子设备及计算机可读存储介质,用于保护SO文件不被非法调用。
为解决上述技术问题,本申请提供一种SO文件调用的方法,该方法包括:
确定SO文件中的函数列表以及所述函数列表中各函数的执行流程;
定义枚举量与所述函数列表一一对应的枚举类型E;
定义类型为所述枚举类型E的全局状态变量S;其中,所述全局状态变量S用于存储所述函数列表中最后一次被调用的函数对应的枚举量的值;
在接收到函数调用命令时,先获取在所述执行流程中当前函数的上一函数对应枚举量的值S1,再判断所述S1与所述全局状态变量S的值是否相等;
若所述S1与所述全局状态变量S的值相等,则将所述当前函数对应的枚举变量赋值给所述全局状态变量S,并执行所述函数调用命令调用所述当前函数;
若所述S1与所述全局状态变量S的值不相等,则终止所述应用程序。
可选的,在确定SO文件中的函数列表以及所述函数列表中各函数的执行流程之前,还包括:
确定所述SO文件中用于提供给所述SO文件内部各个源文件之间相互调用的定义为static类型的B类方法;
定义枚举量与所述B类方法一一对应的枚举类型F,并设置所述枚举类型F的枚举量的值从0开始递增;
定义全局函数指针数组G,并将所述B类方法的地址以及所述B类方法对应的枚举量作为下标存入所述全局函数指针数组G中。
可选的,当接收到的函数调用命令为所述B类方法的调用命令时,所述执行所述函数调用命令调用所述当前函数,包括:
根据所述B类方法的调用命令确定待调用方法的枚举量;
在所述全局函数指针数组G中根据所述待调用方法的枚举量确定所述待调用方法的地址;
根据所述待调用方法的地址对所述待调用方法进行调用。
可选的,在执行所述函数调用命令调用所述当前函数之前,还包括:
确定所述SO文件中需要保护的方法F1;
根据接收到的修改命令对所述方法F1进行修改,以使所述方法F1被调用N次时才执行1次;其中,所述N为1毫秒内调用所述方法F1的次数;
计算所述方法F1在正常运行环境中被调用N-1次所耗时的区间值[t1,t2];
计算所述方法F1在所述应用程序中被调用N-1次所耗的时间T,并判断所述时间T是否在区间值[t1,t2]内;
若所述时间T在所述区间值[t1,t2]内,则进入所述执行所述函数调用命令调用所述当前函数的步骤;
若所述时间T不在所述区间值[t1,t2]内,则终止所述应用程序。
本申请还提供一种SO文件调用的装置,该装置包括:
第一确定模块,用于确定SO文件中的函数列表以及所述函数列表中各函数的执行流程;
第一定义模块,用于定义枚举量与所述函数列表一一对应的枚举类型E;
第二定义模块,用于定义类型为所述枚举类型E的全局状态变量S;其中,所述全局状态变量S用于存储所述函数列表中最后一次被调用的函数对应的枚举量的值;
获取及判断模块,用于在接收到函数调用命令时,先获取在所述执行流程中当前函数的上一函数对应枚举量的值S1,再判断所述S1与所述全局状态变量S的值是否相等;
函数调用模块,用于当所述S1与所述全局状态变量S的值相等时,将所述当前函数对应的枚举变量赋值给所述全局状态变量S,并执行所述函数调用命令调用所述当前函数;
终止模块,用于当所述S1与所述全局状态变量S的值不相等时,终止所述应用程序。
可选的,所述装置还包括:
第二确定模块,用于确定所述SO文件中用于提供给所述SO文件内部各个源文件之间相互调用的定义为static类型的B类方法;
第三定义模块,用于定义枚举量与所述B类方法一一对应的枚举类型F,并设置所述枚举类型F的枚举量的值从0开始递增;
第四定义模块,用于定义全局函数指针数组G,并将所述B类方法的地址以及所述B类方法对应的枚举量作为下标存入所述全局函数指针数组G中。
可选的,所述函数调用模块包括:
第一确定子模块,用于当接收到的函数调用命令为所述B类方法的调用命令时,根据所述B类方法的调用命令确定待调用方法的枚举量;
第二确定子模块,用于在所述全局函数指针数组G中根据所述待调用方法的枚举量确定所述待调用方法的地址;
调用子模块,用于根据所述待调用方法的地址对所述待调用方法进行调用。
可选的,还包括:
第三确定模块,用于确定所述SO文件中需要保护的方法F1;
修改模块,用于根据接收到的修改命令对所述方法F1进行修改,以使所述方法F1被调用N次时才执行1次;其中,所述N为1毫秒内调用所述方法F1的次数;
第一计算模块,用于计算所述方法F1在正常运行环境中被调用N-1次所耗时的区间值[t1,t2];
第二计算模块,用于计算所述方法F1在所述应用程序中被调用N-1次所耗的时间T,并判断所述时间T是否在区间值[t1,t2]内;
结果确定模块,用于当所述时间T在所述区间值[t1,t2]内时,进入所述函数调用模块执行所述函数调用命令调用所述当前函数的步骤;当所述时间T不在所述区间值[t1,t2]内时,终止所述应用程序。
本申请还提供一种电子设备,该电子设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述SO文件调用的方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述SO文件调用的方法的步骤。
本申请所提供SO文件调用的方法,包括:确定SO文件中的函数列表以及函数列表中各函数的执行流程;定义枚举量与函数列表一一对应的枚举类型E;定义类型为枚举类型E的全局状态变量S;其中,全局状态变量S用于存储函数列表中最后一次被调用的函数对应的枚举量的值;在接收到函数调用命令时,先获取在执行流程中当前函数的上一函数对应枚举量的值S1,再判断S1与全局状态变量S的值是否相等;若S1与全局状态变量S的值相等,则将当前函数对应的枚举变量赋值给全局状态变量S,并执行函数调用命令调用当前函数;若S1与全局状态变量S的值不相等,则终止应用程序。
本申请所提供的技术方案,通过预先定义枚举量与函数列表一一对应的枚举类型E,以及定义类型为枚举类型E的全局状态变量S,使得在接收到函数调用命令时,判断上一函数对应枚举量的值S1与全局状态变量S的值是否相等;若相等,则证明SO文件中的接口没有被非法调用,此时将当前函数对应的枚举变量赋值给全局状态变量S,并执行函数调用命令调用当前函数;若不相等,则证明全局状态变量S发生了改变,即SO文件中的接口被非法调用,此时终止应用程序,防止攻击者直接利用SO文件提供的接口进行用户数据窃取,保护SO文件不被非法调用。本申请同时还提供了一种SO文件调用的装置、电子设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种SO文件调用的方法的流程图;
图2为本申请实施例所提供的另一种SO文件调用的方法的流程图;
图3为图2所提供的一种SO文件调用的方法中S105的一种实际表现方式的流程图;
图4为本申请实施例所提供的再一种SO文件调用的方法的流程图;
图5为本申请实施例所提供的一种SO文件调用的装置500的结构图;
图6为本申请实施例所提供的另一种SO文件调用的装置500的结构图;
图7为本申请根据一示例性实施例示出的一种电子设备700的框图。
具体实施方式
本申请的核心是提供一种SO文件调用的方法、装置、电子设备及计算机可读存储介质,用于保护SO文件不被非法调用。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种SO文件调用的方法的流程图。
其具体包括如下步骤:
在步骤S101中,确定SO文件中的函数列表以及函数列表中各函数的执行流程;
这里提到的SO文件为Linux系统及安卓平台下的文件,SO文件有时候是直接被调用的,有时候是会参与到编译中的,也就是说,一个SO文件可能会被多个应用程序用到,与windows中的链接库dll类似,应用开发者为了提高软件的安全性,往往把应用程序核心的逻辑用native层实现,编译成SO文件;
本申请预先确定应用程序中的SO文件,然后确定SO文件中的函数列表以及函数列表中各函数的执行流程,进而得到每个函数执行的先后顺序。
在步骤S102中,定义枚举量与函数列表一一对应的枚举类型E;
在步骤S103中,定义类型为枚举类型E的全局状态变量S;
本申请中定义枚举类型E的枚举量与步骤S101中的函数列表一一对应,然后定义类型为枚举类型E的全局状态变量S来存储函数列表中最后一次被调用的函数对应的枚举量的值,使得函数列表内的函数被调用时,全局状态变量S存储最后一次被调用的函数对应的枚举量的值,进而能够根据全局状态变量S确定最后一次被调用函数的身份。
在步骤S104中,在接收到函数调用命令时,先获取在执行流程中当前函数的上一函数对应枚举量的值S1,再判断S1与全局状态变量S的值是否相等;
若是,则进入步骤S105;若否,则进入步骤S106;
在接收到函数调用命令时,先获取在执行流程中当前函数的上一函数对应枚举量的值S1,再判断S1与全局状态变量S的值是否相等,进而根据判断结果确定函数列表中最后一次被调用的函数是否为执行流程中当前函数的上一函数,若是,则表明此次调用不为非法调用;若否,则表明此次调用为非法调用。
在步骤S105中,若S1与全局状态变量S的值相等,则将当前函数对应的枚举变量赋值给全局状态变量S,并执行函数调用命令调用当前函数;
当确定S1与全局状态变量S的值相等时,此时将当前函数对应的枚举变量赋值给全局状态变量S,表明当前函数为函数列表中最后一次被调用的函数,并执行函数调用命令调用当前函数。
在步骤S106中,若S1与全局状态变量S的值不相等,则终止应用程序。
当确定S1与全局状态变量S的值不相等时,表明此次调用为非法调用,此时终止该应用程序;
可选的,在终止该应用程序之后,还可以发出该应用程序停止运行的提示信息,以方便用户进行故障排查或确定非法调用来源。
基于上述技术方案,本申请所提供的一种SO文件调用的方法,通过预先定义枚举量与函数列表一一对应的枚举类型E,以及定义类型为枚举类型E的全局状态变量S,使得在接收到函数调用命令时,判断上一函数对应枚举量的值S1与全局状态变量S的值是否相等;若相等,则证明SO文件中的接口没有被非法调用,此时将当前函数对应的枚举变量赋值给全局状态变量S,并执行函数调用命令调用当前函数;若不相等,则证明全局状态变量S发生了改变,即SO文件中的接口被非法调用,此时终止应用程序,防止攻击者直接利用SO文件提供的接口进行用户数据窃取,保护SO文件不被非法调用。
基于上一实施例,其中所描述的SO文件调用的方法,在面对SO文件被非法调用的问题时,其具体也可以对SO文件中的方法类别进行修改,下面结合图2进行说明。请参考图2,图2为本申请实施例所提供的另一种SO文件调用的方法的流程图。
在步骤S101之前,其具体包括以下步骤:
在步骤S201中,确定SO文件中用于提供给SO文件内部各个源文件之间相互调用的定义为static类型的B类方法;
在步骤S202中,定义枚举量与B类方法一一对应的枚举类型F,并设置枚举类型F的枚举量的值从0开始递增;
在步骤S203中,定义全局函数指针数组G,并将B类方法的地址以及B类方法对应的枚举量作为下标存入全局函数指针数组G中。
SO文件中的方法可以分为3类:A.提供给外部SO文件使用方法;B.提供给SO文件内部各个源文件(如.c/.cpp)之间相互调用的方法;C.提供给源文件内部使用的方法,本申请实施例预先在实际编码中将B类方法和C类方法全部定义为static类型,并通过上述步骤S201-S203对B类方法进行处理,使得B类方法被调用时,需要通过全局的数组获取方法的地址再进行调用实现,通过此方式处理后,反编译SO文件将无法查看到B类方法和C类方法的符号信息,从而降低接口被非法调用的风险;
可选的,在上述实施例的基础上,当接收到的函数调用命令为B类方法的调用命令时,步骤S105中提到的执行函数调用命令调用当前函数可以包括如图3所示的步骤。请参考图3,图3为图2所提供的一种SO文件调用的方法中S105的一种实际表现方式的流程图;其具体包括以下步骤:
在步骤S301中,根据B类方法的调用命令确定待调用方法的枚举量;
在步骤S302中,在全局函数指针数组G中根据待调用方法的枚举量确定待调用方法的地址;
在步骤S303中,根据待调用方法的地址对待调用方法进行调用。
针对于上述任一实施例,基于攻击者不用完全清楚应用程序的处理逻辑,还可以通过HOOK方式(将自定义的代码插入指定API的执行流程中,当API被调用时,自定义代码也被执行)获取应用程序的数据,本申请提供了再一种SO文件调用的方法,用于解决该问题;
请参考图4,图4为本申请实施例所提供的再一种SO文件调用的方法的流程图。
在上述任一项实施例的基础上,在执行步骤S105:执行函数调用命令调用当前函数之前,还可以包括如下步骤:
在步骤S401中,确定SO文件中需要保护的方法F1;
在步骤S402中,根据接收到的修改命令对方法F1进行修改,以使方法F1被调用N次时才执行1次;
其中,N为1毫秒内调用方法F1的次数;
在步骤S403中,计算方法F1在正常运行环境中被调用N-1次所耗时的区间值[t1,t2];
在步骤S404中,计算方法F1在应用程序中被调用N-1次所耗的时间T,并判断时间T是否在区间值[t1,t2]内;
在步骤S405中,若时间T在区间值[t1,t2]内,则进入执行函数调用命令调用当前函数的步骤;
在步骤S406中,若时间T不在区间值[t1,t2]内,则终止应用程序。
由于执行被HOOK的方法和执行未被HOOK的方法,在耗时上存在较大差异,故本申请实施例根据方法执行的时间来确定方法是否被HOOK,在调用方法之前,对其进行是否被HOOK的检测,若发现被HOOK则终止应用程序,进而能够有效的阻止通过HOOK关键方法窃取用户数据,可以有效的保护SO文件的代码安全,从而很好的保护应用程序的安全。
请参考图5,图5为本申请实施例所提供的一种SO文件调用的装置500的结构图。
该装置可以包括:
第一确定模块510,用于确定SO文件中的函数列表以及函数列表中各函数的执行流程;
第一定义模块520,用于定义枚举量与函数列表一一对应的枚举类型E;
第二定义模块530,用于定义类型为枚举类型E的全局状态变量S;其中,全局状态变量S用于存储函数列表中最后一次被调用的函数对应的枚举量的值;
获取及判断模块540,用于在接收到函数调用命令时,先获取在执行流程中当前函数的上一函数对应枚举量的值S1,再判断S1与全局状态变量S的值是否相等;
函数调用模块550,用于当S1与全局状态变量S的值相等时,将当前函数对应的枚举变量赋值给全局状态变量S,并执行函数调用命令调用当前函数;
终止模块560,用于当S1与全局状态变量S的值不相等时,终止应用程序。
请参考图6,图6为本申请实施例所提供的另一种SO文件调用的装置的结构图。
该装置还可以包括:
第二确定模块,用于确定SO文件中用于提供给SO文件内部各个源文件之间相互调用的B类方法;
第三定义模块,用于定义枚举量与B类方法一一对应的枚举类型F,并设置枚举类型F的枚举量的值从0开始递增;
第四定义模块,用于定义全局函数指针数组G,并将B类方法的地址以及B类方法对应的枚举量作为下标存入全局函数指针数组G中。
该函数调用模块550可以包括:
第一确定子模块,用于当接收到的函数调用命令为B类方法的调用命令时,根据B类方法的调用命令确定待调用方法的枚举量;
第二确定子模块,用于在全局函数指针数组G中根据待调用方法的枚举量确定待调用方法的地址;
调用子模块,用于根据待调用方法的地址对待调用方法进行调用。
该装置还可以包括:
第三确定模块,用于确定SO文件中需要保护的方法F1;
修改模块,用于根据接收到的修改命令对方法F1进行修改,以使方法F1被调用N次时才执行1次;其中,N为1毫秒内调用方法F1的次数;
第一计算模块,用于计算方法F1在正常运行环境中被调用N-1次所耗时的区间值[t1,t2];
第二计算模块,用于计算方法F1在应用程序中被调用N-1次所耗的时间T,并判断时间T是否在区间值[t1,t2]内;
结果确定模块,用于当时间T在区间值[t1,t2]内时,进入函数调用模块执行函数调用命令调用当前函数的步骤;当时间T不在区间值[t1,t2]内时,终止应用程序。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
请参考图7,图7为本申请根据一示例性实施例示出的一种电子设备700的框图。
如图7所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的SO文件调用的方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的SO文件调用的方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的SO文件调用的方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的SO文件调用的方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上对本申请所提供的一种SO文件调用的方法、装置、电子设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种SO文件调用的方法,其特征在于,包括:
确定SO文件中的函数列表以及所述函数列表中各函数的执行流程;
定义枚举量与所述函数列表一一对应的枚举类型E;
定义类型为所述枚举类型E的全局状态变量S;其中,所述全局状态变量S用于存储所述函数列表中最后一次被调用的函数对应的枚举量的值;
在接收到函数调用命令时,先获取在所述执行流程中当前函数的上一函数对应枚举量的值S1,再判断所述S1与所述全局状态变量S的值是否相等;
若所述S1与所述全局状态变量S的值相等,则将所述当前函数对应的枚举变量赋值给所述全局状态变量S,并执行所述函数调用命令调用所述当前函数;
若所述S1与所述全局状态变量S的值不相等,则终止所述SO文件所属的应用程序。
2.根据权利要求1所述的方法,其特征在于,在确定SO文件中的函数列表以及所述函数列表中各函数的执行流程之前,还包括:
确定所述SO文件中用于提供给所述SO文件内部各个源文件之间相互调用的定义为static类型的B类方法;
定义枚举量与所述B类方法一一对应的枚举类型F,并设置所述枚举类型F的枚举量的值从0开始递增;
定义全局函数指针数组G,并将所述B类方法的地址以及所述B类方法对应的枚举量作为下标存入所述全局函数指针数组G中。
3.根据权利要求2所述的方法,其特征在于,当接收到的函数调用命令为所述B类方法的调用命令时,所述执行所述函数调用命令调用所述当前函数,包括:
根据所述B类方法的调用命令确定待调用方法的枚举量;
在所述全局函数指针数组G中根据所述待调用方法的枚举量确定所述待调用方法的地址;
根据所述待调用方法的地址对所述待调用方法进行调用。
4.根据权利要求1-3任一项所述的方法,其特征在于,在执行所述函数调用命令调用所述当前函数之前,还包括:
确定所述SO文件中需要保护的方法F1;
根据接收到的修改命令对所述方法F1进行修改,以使所述方法F1被调用N次时才执行1次;其中,所述N为1毫秒内调用所述方法F1的次数;
计算所述方法F1在正常运行环境中被调用N-1次所耗时的区间值[t1,t2];
计算所述方法F1在所述应用程序中被调用N-1次所耗的时间T,并判断所述时间T是否在区间值[t1,t2]内;
若所述时间T在所述区间值[t1,t2]内,则进入所述执行所述函数调用命令调用所述当前函数的步骤;
若所述时间T不在所述区间值[t1,t2]内,则终止所述应用程序。
5.一种SO文件调用的装置,其特征在于,包括:
第一确定模块,用于确定SO文件中的函数列表以及所述函数列表中各函数的执行流程;
第一定义模块,用于定义枚举量与所述函数列表一一对应的枚举类型E;
第二定义模块,用于定义类型为所述枚举类型E的全局状态变量S;其中,所述全局状态变量S用于存储所述函数列表中最后一次被调用的函数对应的枚举量的值;
获取及判断模块,用于在接收到函数调用命令时,先获取在所述执行流程中当前函数的上一函数对应枚举量的值S1,再判断所述S1与所述全局状态变量S的值是否相等;
函数调用模块,用于当所述S1与所述全局状态变量S的值相等时,将所述当前函数对应的枚举变量赋值给所述全局状态变量S,并执行所述函数调用命令调用所述当前函数;
终止模块,用于当所述S1与所述全局状态变量S的值不相等时,终止所述SO文件所属的应用程序。
6.根据权利要求5所述的装置,其特征在于,还包括:
第二确定模块,用于确定所述SO文件中用于提供给所述SO文件内部各个源文件之间相互调用的定义为static类型的B类方法;
第三定义模块,用于定义枚举量与所述B类方法一一对应的枚举类型F,并设置所述枚举类型F的枚举量的值从0开始递增;
第四定义模块,用于定义全局函数指针数组G,并将所述B类方法的地址以及所述B类方法对应的枚举量作为下标存入所述全局函数指针数组G中。
7.根据权利要求6所述的装置,其特征在于,所述函数调用模块包括:
第一确定子模块,用于当接收到的函数调用命令为所述B类方法的调用命令时,根据所述B类方法的调用命令确定待调用方法的枚举量;
第二确定子模块,用于在所述全局函数指针数组G中根据所述待调用方法的枚举量确定所述待调用方法的地址;
调用子模块,用于根据所述待调用方法的地址对所述待调用方法进行调用。
8.根据权利要求5所述的装置,其特征在于,还包括:
第三确定模块,用于确定所述SO文件中需要保护的方法F1;
修改模块,用于根据接收到的修改命令对所述方法F1进行修改,以使所述方法F1被调用N次时才执行1次;其中,所述N为1毫秒内调用所述方法F1的次数;
第一计算模块,用于计算所述方法F1在正常运行环境中被调用N-1次所耗时的区间值[t1,t2];
第二计算模块,用于计算所述方法F1在所述应用程序中被调用N-1次所耗的时间T,并判断所述时间T是否在区间值[t1,t2]内;
结果确定模块,用于当所述时间T在所述区间值[t1,t2]内时,进入所述函数调用模块执行所述函数调用命令调用所述当前函数的步骤;当所述时间T不在所述区间值[t1,t2]内时,终止所述应用程序。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述SO文件调用的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述SO文件调用的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811595257.0A CN109635589B (zh) | 2018-12-25 | 2018-12-25 | So文件调用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811595257.0A CN109635589B (zh) | 2018-12-25 | 2018-12-25 | So文件调用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109635589A CN109635589A (zh) | 2019-04-16 |
CN109635589B true CN109635589B (zh) | 2022-06-14 |
Family
ID=66077588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811595257.0A Active CN109635589B (zh) | 2018-12-25 | 2018-12-25 | So文件调用的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109635589B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506639A (zh) * | 2014-12-29 | 2015-04-08 | 北京奇虎科技有限公司 | 一种获取Root权限的方法及装置 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105718796A (zh) * | 2016-01-21 | 2016-06-29 | 西安电子科技大学 | 一种安卓用户隐私数据访问的系统调用级监控方法 |
CN107358071A (zh) * | 2017-06-07 | 2017-11-17 | 武汉斗鱼网络科技有限公司 | 防止Flash应用程序中函数非法调用的方法及装置 |
CN107659455A (zh) * | 2017-10-16 | 2018-02-02 | 武汉斗鱼网络科技有限公司 | 一种iOS端Mock数据的方法、存储介质、设备及系统 |
CN108008883A (zh) * | 2016-10-31 | 2018-05-08 | 成都卫士通信息产业股份有限公司 | 一种解锁界面的域切换方法、域切换系统以及智能终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10382446B2 (en) * | 2015-05-28 | 2019-08-13 | Cameyo Inc. | Computerized system, method and computer program product, for managing a computer program's operations |
-
2018
- 2018-12-25 CN CN201811595257.0A patent/CN109635589B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506639A (zh) * | 2014-12-29 | 2015-04-08 | 北京奇虎科技有限公司 | 一种获取Root权限的方法及装置 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105718796A (zh) * | 2016-01-21 | 2016-06-29 | 西安电子科技大学 | 一种安卓用户隐私数据访问的系统调用级监控方法 |
CN108008883A (zh) * | 2016-10-31 | 2018-05-08 | 成都卫士通信息产业股份有限公司 | 一种解锁界面的域切换方法、域切换系统以及智能终端 |
CN107358071A (zh) * | 2017-06-07 | 2017-11-17 | 武汉斗鱼网络科技有限公司 | 防止Flash应用程序中函数非法调用的方法及装置 |
CN107659455A (zh) * | 2017-10-16 | 2018-02-02 | 武汉斗鱼网络科技有限公司 | 一种iOS端Mock数据的方法、存储介质、设备及系统 |
Non-Patent Citations (3)
Title |
---|
Erasure Code of Small File in a Distributed File System;Xinhai Chen等;《网页在线公开:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8322995》;20180326;第1-6页 * |
基于多特征的Android 恶意软件检测方法;程运安等;《计算机工程与应用》;20170517;第53卷(第8期);第95-101页 * |
基于机器学习算法的Android恶意程序检测系统;张家旺等;《计算机应用研究》;20170731;第34卷(第6期);第1774-1777页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109635589A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10104123B2 (en) | Fetching a policy definition library from a policy server at mobile device runtime of an application package to control access to mobile device resources | |
KR102546601B1 (ko) | 정적 바이너리 계측을 사용하여 커널 제어-흐름 무결성을 보호하기 위한 방법 및 장치 | |
CN110502222B (zh) | 外发依赖内部基础库的aar方法、装置、介质和设备 | |
CN110008690B (zh) | 终端应用的权限管理方法、装置、设备和介质 | |
CN103324506A (zh) | 一种控制Android应用程序安装的方法及手机 | |
US8117451B2 (en) | Device controller, method for controlling a device, and program therefor | |
CN108763951B (zh) | 一种数据的保护方法及装置 | |
CN109684795B (zh) | 应用程序反调试的方法、装置及电子设备 | |
CN107870793B (zh) | 一种应用程序中加载so文件的方法及装置 | |
CN104750523A (zh) | 一种信息处理方法及电子设备 | |
CN108197469B (zh) | 校验应用程序的方法、装置和存储介质以及电子设备 | |
CN112379940A (zh) | 一种可执行文件处理方法、装置、电子设备及存储介质 | |
CN103885784A (zh) | 具有安全模块可插拔功能的Android平台构建方法 | |
CN109635589B (zh) | So文件调用的方法及装置 | |
CN108628620B (zh) | Pos应用开发的实现方法、装置、计算机设备和存储介质 | |
CN109189411B (zh) | 一种云应用安装方法 | |
CN106778213A (zh) | 一种静默安装应用程序的方法及终端 | |
CN111222122A (zh) | 应用权限管理方法、装置及嵌入式设备 | |
CN106203087B (zh) | 注入防护方法、系统、终端以及存储介质 | |
CN107392010B (zh) | 执行Root操作的方法及装置、终端设备、存储介质 | |
CN114329359A (zh) | Api调用控制方法及装置、存储介质及电子设备 | |
CN106886721B (zh) | 一种在应用中实现辅助功能的方法及装置 | |
US20190102573A1 (en) | Theater ears android app sensitive data management | |
CN113553271A (zh) | 一种应用程序内部测试程序生成及测试方法 | |
CN112883370B (zh) | 应用程序状态检测方法和装置、存储介质和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: No. 333, Yunhua Road, high tech Zone, Chengdu, Sichuan 610041 Patentee after: China Electronics Technology Network Security Technology Co.,Ltd. Address before: No. 333, Yunhua Road, high tech Zone, Chengdu, Sichuan 610041 Patentee before: CHENGDU WESTONE INFORMATION INDUSTRY Inc. |