CN115982672A - 越狱检测应用程序生成方法、检测方法、设备及存储介质 - Google Patents
越狱检测应用程序生成方法、检测方法、设备及存储介质 Download PDFInfo
- Publication number
- CN115982672A CN115982672A CN202310061328.3A CN202310061328A CN115982672A CN 115982672 A CN115982672 A CN 115982672A CN 202310061328 A CN202310061328 A CN 202310061328A CN 115982672 A CN115982672 A CN 115982672A
- Authority
- CN
- China
- Prior art keywords
- jail
- crossing
- function
- library
- crossing detection
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
越狱检测应用程序生成方法、检测方法、设备及存储介质,属于信息安全技术领域。创建目标应用程序对应的工程;创建类型为动态库的第二编译目标;对所述工程进行编译和打包,所述依赖库中包括依赖库load函数编译目标和越狱检测函数编译目标,所述依赖库load函数编译目标调用越狱检测函数编译目标的越狱检测函数,进行越狱检测,判断手动等应用程序是否越狱;存储检测结果。本发明还提供计算机设备、计算机可读存储介质等。本发明将越狱检测的时机提前,利用函数调用顺序来确保越狱检测函数生效;可以实现越狱检测尤其是解决越狱函数因被hook而失效的问题;实现简单、效率高;提高了越狱破解越狱检测函数的难度。
Description
技术领域
本发明涉及一种越狱检测应用程序生成方法、检测方法、设备及存储介质,属于信息安全技术领域。
背景技术
越狱,一般指iOS越狱(iOS Jailbreaking),是用于获取苹果公司便携式装置操作系统iOS最高权限的一种技术手段,从而可以绕过相关规则进行一些操作。通过越狱的这些操作:(1)对iOS系统本身进行一些损害。比如,可以通过相关插件进行虚拟定位,从而伪造用户的位置信息;又比如,可以通过相关插件对设备识别码等信息进行伪造、实现软件外挂功能等,从而恶意参与有关平台活动,进而牟取非法利益等;又或者,甚至有的可以进一步解开运营商对手机网络的限制,因此,存在较大的安全隐患;(2)对iOS系统中安装的APP(应用程序)进行破坏;等等。一些攻击者多采用对操作系统进行越狱来分析破解APP——随着移动互联网技术的迅速发展,越来越多的业务可以在移动终端上进行操作——人们可以通过手机上安装的App(应用程序,Application的缩写)进行各种各样的业务,实现各种各样的功能——但是,一般情况下,为了安全,很多软件主要是APP是不允许在操作系统为越狱情况下使用,以防止攻击者破解APP,如,金融类的APP,例如手机银行的APP等,对安全性的要求很高,这类APP多不允许在操作系统为越狱情况下使用,等等。
目前,在iOS系统中具备越狱检测能力的应用程序App启动方法,大部分越狱检测时机都是在main函数执行完之后进行越狱检测。图1是目前在iOS系统中具备越狱检测能力的应用程序App启动方法的流程图。如图1所示,在iOS系统中具备越狱检测能力的应用程序App启动方法,包括以下步骤:
S1,App启动;
S2,初始化主程序;
S3,插入动态库;当应用程序启动时,通常会优先加载应用程序依赖的动态库(称为“依赖库”)并调用其load函数;随后才会加载外部注入的动态库(如,越狱插件动态库),并调用其load函数;
S4,链接主程序;
S5,链接动态库;
S6,执行初始化函数;
S7,执行main函数;
S8,越狱检测,执行越狱检测函数;
S9,结束启动流程。
在该时机检测存在以下问题:
(1)检测触发时机过晚,检测函数容易被hook。
(2)在手机越狱情况下,安装越狱检测插件就可以使越狱检测函数失效。
(3)在重签名(手机非越狱)的情况下,通过编写动态库进行hook越狱检测函数的方式,也会导致检测函数失效。
发明内容
针对现有技术存在的问题,本发明的目的是提供一种利用动态库加载机制的越狱检测方法及装置、终端和存储介质。
本发明提供一种越狱检测应用程序生成方法,所述方法包括:
创建目标应用程序对应的工程,所述工程中包含类型为应用程序的第一编译目标;
在所述工程中创建类型为动态库的第二编译目标;
对所述工程进行编译和打包,生成所述目标应用程序的安装包,所述安装包中包括与所述第一编译目标对应的应用程序集以及所述第二编译目标对应的动态库;其中,
所述第一编译目标包括应用程序的主程序目标内容;
所述第二编译目标的动态库为一依赖库,其中,所述的依赖库中包括依赖库load函数编译目标和越狱检测函数编译目标,所述依赖库load函数编译目标调用越狱检测函数编译目标的越狱检测函数,进行越狱检测;当发现有越狱行为,无效越狱行为。
所述主程序目标内容包括代码文件;所述的第一编译目标内容包括所述的代码文件,或,所述的代码文件和库文件,或,所述的代码文件和库文件和资源文件。
所述的越狱检测包括对启动环境变量、程序是否调试、被调试状态、终端是否安装越狱工具进行检查判断。
当发现有外部动态库load函数调用、修改或屏蔽越狱检测函数时,依赖库中的load函数使得外部动态库load函数的调用、修改或屏蔽无效。
该越狱检测应用程序生成方法,还包括将检测越狱的结果存放到终端存储单元的步骤。
本发明还提供一种越狱检测应用程序的检测方法。该方法包括如下步骤:
启动应用程序;
链接主程序;
添加应用程序内部动态库,将内部动态库的依赖库加入主程序全局数组中;在依赖库中load函数设置调用越狱检测函数,所述越狱检测函数执行越狱检测,判断应用程序是否越狱;
检测是否有注入的外部动态库,如果有,则链接外部动态库;
添加外部动态库进入主程序全局数组中;
执行初始化函数;
遍历主程序全局数组中所有库,并依加入时间先后顺序依次调用每个库的load函数进行相应函数的调用;
依赖库中的load函数中调用越狱检测函数并执行越狱检测函数对应用程序进行检测;获取检测结果,判断应用程序是否越狱;如果判断有越狱,则无效越狱行为。
所述的执行越狱检测函数对应用程序进行检测包括对启动环境变量、程序是否调试被调试状态、终端是否安装越狱工具进行判断是否越狱。
所述越狱检测应用程序的检测方法还包括将检测越狱的结果存放到终端存储单元的步骤。
所述越狱检测应用程序的检测方法,当有外部动态库时,还包括:在执行完依赖库中的load函数后,执行动态库中的load函数,当动态库中的load函数调用、修改或屏蔽越狱检测函数时,其调用、修改或屏蔽无效。
本发明的应用程序启动后,可以从磁盘中取出检测结果,当发现是越狱状态后上报服务端,标记该用户是越狱账号、或禁止其使用app、禁止登录、限定业务功能等等。
本发明还提供一种越狱检测应用程序的生成装置,所述装置包括:
工程创建模块,用于创建目标越狱检测应用程序对应的工程,所述工程中包含类型为应用程序的第一编译目标;
目标创建模块,用于在所述工程中创建类型为动态库的第二编译目标;
编译打包模块:对所述工程进行编译和打包,生成所述目标应用程序的安装包,所述安装包中包括与所述第一编译目标对应的应用程序集以及所述第二编译目标对应的动态库;其中,
所述第一编译目标包括应用程序的主程序目标内容;
所述第二编译目标的动态库为一依赖库,其中,所述的依赖库中包括依赖库load函数编译目标和越狱检测函数编译目标,所述依赖库中的load函数编译目标调用越狱检测函数编译目标的越狱检测函数,进行越狱检测;当发现有越狱行为,无效越狱行为。
所述主程序目标内容包括代码文件;所述的第一编译目标内容包括所述的代码文件,或,包括所述的代码文件和库文件,或,所述的代码文件和库文件和资源文件。
所述越狱检测包括对启动环境变量、程序是否调试、被调试状态、终端是否安装越狱工具进行检查判断。
所述生成装置,当发现有外部动态库load函数调用、修改或屏蔽越狱检测函数时,依赖库load函数使得外部动态库load函数的调用、修改或屏蔽无效。
所述生成装置,还包括存储模块,用于存放检测越狱的结果。
本发明还提供一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述越狱检测应用程序生成方法。
本发明还提供一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述越狱检测应用程序的检测方法。
本发明还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述越狱检测应用程序生成方法。
本发明一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述越狱检测应用程序的检测方法。
本发明利用iOS应用程序启动时进行加载动态库的原理,确保越狱检测的时机提前,避免越狱插件绕过检测机制。当应用程序启动时,会优先加载应用程序依赖的动态库并调用其load函数。随后才会加载外部注入的动态库(越狱插件动态库),并调用其load函数,此时检测函数已经检测完成。当需要获取越狱检测结果时,不再进行执行越狱检测函数,而是直接从磁盘中获取检测结果,当发现有越狱行为后上报服务端,标记该用户是越狱账号、或禁止其使用应用程序app、禁止登录、限定业务功能等等。
本发明的有益效果是:
1、本发明可以实现越狱检测尤其是解决越狱函数因被hook而失效的问题,解决了人们渴望解决的技术难题。
2、仅需编写一个动态库,可以使用任意越狱检测逻辑,本发明简单、方法巧妙、效率高。
3、本发明提高了越狱破解越狱检测函数的难度。
附图说明
图1是目前在iOS系统中具备越狱检测能力的应用程序App启动方法的流程图。
图2是本发明示例一种越狱检测应用程序的生成方法的流程图。
图3是本发明示例一种越狱检测应用程序的检测方法的流程图。
图4是本发明示例一种越狱检测应用程序的生成装置的框图。
图5是本发明示例一种计算机设备的框图。
具体实施方式
下面结合附图和具体实施方式来进一步说明本发明。具体实施方式是用于说明本发明的,而不是用于限制本发明的。
图2是本发明示例一种越狱检测应用程序的生成方法的流程图,如图2所示,一种越狱检测应用程序的生成方法,所述方法包括以下步骤:
S11,创建目标应用程序对应的工程,所述工程中包含类型为应用程序的第一编译目标;
S12,在所述工程中创建类型为动态库的第二编译目标;
S13,对所述工程进行编译和打包;
S14,生成所述目标应用程序的安装包,所述安装包中包括与所述第一编译目标对应的应用程序集以及所述第二编译目标对应的动态库;其中,
所述第一编译目标包括应用程序的主程序目标内容;
所述第二编译目标的动态库为一依赖库A,其中,所述的依赖库A中包括依赖库load函数编译目标和越狱检测函数编译目标,所述依赖库load函数编译目标调用越狱检测函数编译目标的越狱检测函数,进行越狱检测;当发现有越狱行为,无效越狱行为。
所述主程序目标内容包括代码文件;所述的第一编译目标内容包括所述的代码文件,或,所述的第一编译目标内容包括所述的代码文件和库文件,或,所述的第一编译目标内容包括所述的代码文件和库文件和资源文件。
所述的越狱检测包括对启动环境变量、程序是否调试、被调试状态、终端是否安装越狱工具进行检查判断。
所述越狱检测应用程序的生成方法,当发现有外部动态库load函数调用、修改或屏蔽越狱检测函数时,依赖库中的load函数使得外部动态库load函数的调用、修改或屏蔽无效。
所述越狱检测应用程序的生成方法,还包括将检测越狱的结果存放到终端存储单元的步骤。
更进一步的是,图3是本发明示例一种越狱检测应用程序的检测方法的流程图,如图3所示,一种越狱检测应用程序的检测方法,包括如下步骤:
S21,启动应用程序:
S22,链接主程序;
S23,添加应用程序内部动态库,将内部动态库的依赖库A加入主程序全局数组Array中;在依赖库A中load函数设置调用越狱检测函数,所述越狱检测函数执行越狱检测,判断应用程序是否越狱;
S24,检测是否有注入的外部动态库,如果有,则链接外部动态库;
S25添加外部动态库B进入主程序全局数组Array中;
S26,执行初始化函数load:
S27,遍历主程序全局数组Array中所有库,并依加入时间先后顺序依次调用每个库的load函数进行相应函数的调用;
S28,依赖库A中的load函数中调用越狱检测函数并执行越狱检测函数对应用程序进行检测;
S29,获取检测结果,判断应用程序是否越狱;如果判断有越狱,则无效越狱行为。
所述的执行越狱检测函数对应用程序进行检测包括对启动环境变量、程序是否调试被调试状态、终端是否安装越狱工具进行判断是否越狱。
所述的越狱检测应用程序的检测方法,还包括:S30,将检测越狱的结果存放到终端存储单元的步骤。
所述的越狱检测应用程序的检测方法,当有外部动态库B时,还包括:在执行完依赖库A中的load函数后,执行动态库B中的load函数,当动态库B中的load函数调用、修改或屏蔽越狱检测函数时,其调用、修改或屏蔽无效。
本发明的应用程序启动后,可以从磁盘中取出检测结果,当从磁盘中取出的检测结果发现有越狱行为后上报服务端,标记该用户是越狱账号、或禁止其使用app、禁止登录、限定业务功能等。
这里越狱检测函数,指能够确定执行了该越狱检测函数的设备是原装设备还是越狱设备。由于原装设备上不允许分叉(forking),因此越狱检测函数可以,例如,使用fork(),并检查返回的进程id以查看其是否已经成功地分叉,在是的情况下,可以确定设备已越狱。类似地,调用具有空参数的system()也能够确定越狱:如果返回1则确定是越狱设备,如果返回0则确定是原装设备;Zdziarski在“Hackingand Securing iOSApplications”中还描述了其他越狱检测函数。本发明这里也可以选用其他越狱检测方法。在众多不同的越狱检测方法中,一般优选使用越狱检测函数作为越狱检测方法。
主程序:每个应用程序都会由一个主程序,是应用启动的入口程序。除了动态库,所有的代码最终都会打包在主程序中。
依赖库:应用程序包中包含的动态库,是一个个独立的程序包,由苹果系统在应用程序启动时进行加载。
动态库:这里主要指应用程序外的动态库,是由越狱系统通过技术手段注入到应用程序中的程序包。在启动时加载。
load函数:苹果系统在加载对应的库之后,会自动进行调用的函数。
钩子技术(hook),是指在不修改目标函数代码的情况下,通过利用技术手段交换目标函数与自定义函数的实现,达到拦截目标函数,篡改目标函数原有逻辑的目的,在iOS系统下,待调用的函数被钩时,函数逻辑会发生改变,设备调用被钩函数后无法获得真实运行结果,系统安全性低。
重签名技术,是指绕过苹果公司的对手机应用程序签名校验的技术。在AppStore上下载的应用程序都会被苹果公司进行加密与签名。签名用苹果开发者账号证书进行签名的。当应用程序启动时,苹果系统也会进行签名校验。当校验不通过,则无法打开应用程序。一般越狱破解都会对应用程序进行解密破解,然后篡改签名信息骗过苹果系统的签名校验,以达到正常运行程序的目的。
本发明越狱检测应用程序的生成方法及越狱检测应用程序的检测方法:(1)通过编写一个依赖库A,并且在依赖库A中load函数可以调用越狱检测函数,进行检测手机等苹果公司iOS系统便携式装置是否是越狱状态,检测过程包含:对启动环境变量、程序是否调试被调试状态、手机(等苹果公司iOS系统便携式装置)是否安装越狱工具等方式进行判断是否越狱、最后会将检测结果存放到手机等苹果公司iOS系统便携式装置的磁盘中等。(2)当应用程序启动时,在“链接主程序”阶段,会将主程序依赖的所有依赖库添加进入全局数组Array中,其中会包含依赖库A。(3)在”链接动态库”阶段,苹果手机系统会检测是否有注入的外部动态库,如果有,则会进行链接。当手机处于越狱状态时,越狱工具将会给每个应用程序启动时注入动态库。所以苹果手机操作系统会在“链接动态库”阶段将外部的动态库B加入Array中。(4)当应用启动到了”执行初始化函数load”阶段,会依次遍历Array中所有的库,并依次调用每个库的load函数。由于A加入Array的时机比B早,所以A的load函数优先被调用,A进行调用越狱检测函数后,会将检测结果写入磁盘。A的load函数执行完之后,才会调用B的load函数,B在load函数中进行hook越狱检测相关函数,进行屏蔽越狱检测函数。但是此时A已经检测完成,所以B的屏蔽失效。(5)当需要获取越狱检测结果时,不再进行执行越狱检测函数,而是从磁盘中取出检测结果,来进行上报、禁止登录、退出程序等操作(根据需求来定)。
即,当应用程序启动时,会将主程序、依赖库(即应用程序内的动态库)、动态库(外部注入的动态库)的镜像信息存按顺序放到一个全局的数组里面。然后进入图1中所示的“执行初始化函数”阶段。该阶段会依次调用依赖库、动态库的load函数进行初始化。而动态库在正常应用程序中是不会存在的,只有手机在越狱状态,会由越狱程序进行添加越狱动态库。动态库重写load函数就可以对目标应用程序或系统检测函数的hook,来使越狱检测函数失效。但是动态库的加载时机落后于依赖库。所以,可以通过在依赖库的load函数里面进行调用越狱检测函数,这样依赖库的load函数先于动态库的load函数调用。就可以避免越狱检测函数失效的问题。
本发明利用iOS应用程序启动时进行加载动态库的原理,确保越狱检测的时机提前,避免越狱插件绕过检测机制。当应用程序启动时,会优先加载应用程序依赖的动态库并调用其load函数。随后才会加载外部注入的动态库(越狱插件动态库),并调用其load函数,此时检测函数已经检测完成;当发现有越狱行为后上报服务端,标记该用户是越狱账号、或禁止其使用app、禁止登录、限定业务功能等等。本发明利用动态库加载机制的越狱检测方法解决了以下技术问题:常规越狱检测时机的滞后,导致容易被绕过;屏蔽越狱检测函数的成本低。
更进一步,本发明还提供一种越狱检测应用程序的生成装置。所述越狱检测应用程序的生成装置包括的各模块用于执行如上实施例中所述越狱检测应用程序的生成方法的各步骤,具体请参阅图2对应的实施例中的相关描述。图4是本发明示例一种越狱检测应用程序的生成装置的框图。图中,100为越狱检测应用程序的生成装置,101为工程创建模块,102为目标创建模块,103为编译打包模块,104为存储模块。如图4所示,一种越狱检测应用程序的生成装置100,所述装置包括:
工程创建模块101,用于创建目标越狱检测应用程序对应的工程,所述工程中包含类型为应用程序的第一编译目标;
目标创建模块102,用于在所述工程中创建类型为动态库的第二编译目标;
编译打包模块103:对所述工程进行编译和打包,生成所述目标应用程序的安装包,所述安装包中包括与所述第一编译目标对应的应用程序集以及所述第二编译目标对应的动态库;其中,
所述第一编译目标包括应用程序的主程序目标内容;
所述第二编译目标的动态库为一依赖库A,其中,所述的依赖库A中包括依赖库load函数编译目标和越狱检测函数编译目标,所述依赖库中的load函数编译目标调用越狱检测函数编译目标的越狱检测函数,进行越狱检测;当发现有越狱行为,无效越狱行为。
所述主程序目标内容包括代码文件;所述的第一编译目标内容包括所述的代码文件,或,所述的第一编译目标内容包括所述的代码文件和库文件,或,所述的第一编译目标内容包括所述的代码文件和库文件和资源文件。
所述的越狱检测包括对启动环境变量、程序是否调试、被调试状态、终端是否安装越狱工具进行检查判断。
所述的越狱检测应用程序的生成装置,当发现有外部动态库load函数调用、修改或屏蔽越狱检测函数时,依赖库load函数使得外部动态库load函数的调用、修改或屏蔽无效。
所述的越狱检测应用程序的生成装置,还包括存储模块104,用于存放检测越狱的结果。
所述越狱检测应用程序的生成装置100可以包括但不仅限于以上单元。本领域技术人员可以理解,图4仅仅是越狱检测应用程序的生成装置100的示例,并不构成对越狱检测应用程序的生成装置100的限定,越狱检测应用程序的生成装置100可以包括比图示更多或更少的部件,或者组合某些部件,或者还包括不同的部件,例如越狱检测应用程序的生成装置100还可以包括输入输出设备(I/O)、数据总线等。
本发明的终端,包括不限于,例如,计算机设备、手机、平板电脑等。
本发明还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述越狱检测应用程序生成方法。
本发明还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述越狱检测应用程序的检测方法。
图5是本发明示例一种计算机设备的框图。图中,200为一种计算机设备,201为处理器,202为存储器,203为存储在存储器202中并可在处理器201上运行的计算机程序203。
示例性的,所述计算机程序203可以被分割成一个或多个单元/模块,所述一个或者多个单元/模块/子模块被存储在存储器202中,并由处理器201执行,以完成本发明。
上述计算机设备200可以包括但不仅限于,处理器201、存储器202。本领域技术人员可以理解,图5仅仅是计算机设备200的示例,并不构成对计算机设备200的限定,计算机设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备200还可以包括输入输出设备(I/O)、网络接入设备等。
所述处理器201可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(D i g i ta l S i g n a l P r o c e s s o r,D SP)、专用集成电路(APPlication Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器202可以是计算机设备200的内部存储单元,例如计算机设备200的磁盘或内存。存储器202也可以是计算机设备200的外部存储设备,例如计算机设备200上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器202还可以既包括计算机设备200的内部存储单元,也包括外部存储设备。存储器202用于存储计算机程序203以及计算机设备200所需的其他程序和数据。存储器202还可以用于暂时地存储已经输出或者将要输出的数据。
本发明还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述越狱检测应用程序生成方法。
本发明还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述越狱检测应用程序的检测方法。
本发明通过在依赖库的load函数里面进行调用越狱检测函数,这样依赖库的load函数先于动态库的load函数调用,就可以避免越狱检测函数失效的问题。本发明的有益效果:
1、本发明将越狱检测的时机提前,确保越狱检测函数正常工作,可以实现越狱检测尤其是解决越狱函数因被hook而失效的问题;解决了人们一直渴望解决的技术问题。
2、本发明巧妙、简单、效率高。
3、本发明提高了越狱破解的成本
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种越狱检测应用程序的生成方法,其特征在于,所述方法包括:
创建目标应用程序对应的工程,所述工程中包含类型为应用程序的第一编译目标;
在所述工程中创建类型为动态库的第二编译目标;
对所述工程进行编译和打包,生成所述目标应用程序的安装包,所述安装包中包括与所述第一编译目标对应的应用程序集以及所述第二编译目标对应的动态库;其中,
所述第一编译目标包括应用程序的主程序目标内容;
所述第二编译目标的动态库为一依赖库,其中,所述的依赖库中包括依赖库load函数编译目标和越狱检测函数编译目标,所述依赖库load函数编译目标调用越狱检测函数编译目标的越狱检测函数,进行越狱检测;当发现有越狱行为,无效越狱行为。
2.如权利要求1所述的越狱检测应用程序的生成方法,其特征在于,所述主程序目标内容包括代码文件;所述的第一编译目标内容包括所述的代码文件,或,所述的第一编译目标内容包括所述的代码文件和库文件,或,所述的第一编译目标内容包括所述的代码文件和库文件和资源文件。
3.如权利要求1所述的越狱检测应用程序的生成方法,其特征在于,所述的越狱检测包括对启动环境变量、程序是否调试、被调试状态、终端是否安装越狱工具进行检查判断。
4.如权利要求1所述的越狱检测应用程序的生成方法,其特征在于,当发现有外部动态库load函数调用、修改或屏蔽越狱检测函数时,依赖库中的load函数使得外部动态库load函数的调用、修改或屏蔽无效。
5.如权利要求1所述的越狱检测应用程序的生成方法,其特征在于,还包括将检测越狱的结果存放到终端存储单元的步骤。
6.一种越狱检测应用程序的检测方法,其特征在于,包括如下步骤:
启动应用程序;
链接主程序;
添加应用程序内部动态库,将内部动态库的依赖库加入主程序全局数组中;在依赖库中load函数设置调用越狱检测函数,所述越狱检测函数执行越狱检测,判断应用程序是否越狱;
检测是否有注入的外部动态库,如果有,则链接外部动态库;
添加外部动态库进入主程序全局数组中;
执行初始化函数;
遍历主程序全局数组中所有库,并依加入时间先后顺序依次调用每个库的load函数进行相应函数的调用;
依赖库中的load函数中调用越狱检测函数并执行越狱检测函数对应用程序进行检测;获取检测结果,判断应用程序是否越狱;如果判断有越狱,则无效越狱行为;
将检测越狱的结果存放到终端存储单元。
7.如权利要求6中所述的越狱检测应用程序的检测方法,其特征在于,所述的执行越狱检测函数对应用程序进行检测包括对启动环境变量、程序是否调试被调试状态、终端是否安装越狱工具进行判断是否越狱。
8.如权利要求6中所述的越狱检测应用程序的检测方法,其特征在于,当有外部动态库时,还包括:在执行完依赖库中的load函数后,执行动态库中的load函数,当动态库中的load函数调用、修改或屏蔽越狱检测函数时,其调用、修改或屏蔽无效。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310061328.3A CN115982672A (zh) | 2023-01-16 | 2023-01-16 | 越狱检测应用程序生成方法、检测方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310061328.3A CN115982672A (zh) | 2023-01-16 | 2023-01-16 | 越狱检测应用程序生成方法、检测方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115982672A true CN115982672A (zh) | 2023-04-18 |
Family
ID=85970232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310061328.3A Pending CN115982672A (zh) | 2023-01-16 | 2023-01-16 | 越狱检测应用程序生成方法、检测方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982672A (zh) |
-
2023
- 2023-01-16 CN CN202310061328.3A patent/CN115982672A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9460281B2 (en) | Method of securing non-native code | |
EP2946330B1 (en) | Method and system for protecting computerized systems from malicious code | |
US9027075B2 (en) | Enforcing security rules at runtime | |
KR101503785B1 (ko) | 동적 라이브러리를 보호하는 방법 및 장치 | |
US9471514B1 (en) | Mitigation of cyber attacks by pointer obfuscation | |
JP7154365B2 (ja) | ソフトウェアコードをセキュアにするための方法 | |
US11269988B2 (en) | Automated software application verification system | |
CN109684795B (zh) | 应用程序反调试的方法、装置及电子设备 | |
US20240143739A1 (en) | Intelligent obfuscation of mobile applications | |
CN110414218B (zh) | 内核检测方法、装置、电子设备及存储介质 | |
Bouffard et al. | Reversing the operating system of a Java based smart card | |
CN112134905B (zh) | 基于安卓系统的签名方法、装置以及设备 | |
CN112559980B (zh) | 一种可内嵌众多任意app的小程序运行时 | |
CN114238943A (zh) | 应用程序防护方法、装置、设备及存储介质 | |
CN115982672A (zh) | 越狱检测应用程序生成方法、检测方法、设备及存储介质 | |
CN106922191B (zh) | 生成和执行受保护的软件项目 | |
KR20210154017A (ko) | 클래스 분산 및 순차적 메모리 적재를 이용한 파일 보호 방법 및 시스템 | |
CN112883370A (zh) | 应用程序状态检测方法和装置、存储介质和电子设备 | |
CN113704753A (zh) | 对系统调用进行拦截替换的方法和装置、电子设备和介质 | |
CN112948241B (zh) | 应用程序的反调试方法、装置、电子设备及存储介质 | |
CN112231702B (zh) | 应用保护方法、装置、设备及介质 | |
CN110806860B (zh) | 安卓环境下的应用封装方法、装置及应用运行方法、装置 | |
CN111523115B (zh) | 信息确定方法、函数调用方法及电子设备 | |
CN110795164B (zh) | 应用封装方法、装置及应用运行方法、装置 | |
Gerstmayer et al. | Binary protection framework for embedded systems |
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 |