CN110059485A - Ios应用的私有api检测方法、终端及存储介质 - Google Patents

Ios应用的私有api检测方法、终端及存储介质 Download PDF

Info

Publication number
CN110059485A
CN110059485A CN201910200507.4A CN201910200507A CN110059485A CN 110059485 A CN110059485 A CN 110059485A CN 201910200507 A CN201910200507 A CN 201910200507A CN 110059485 A CN110059485 A CN 110059485A
Authority
CN
China
Prior art keywords
api
string
privately owned
assemble
dynamic
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
Application number
CN201910200507.4A
Other languages
English (en)
Inventor
莫婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Urban Construction Technology Shenzhen Co Ltd
Original Assignee
Ping An Urban Construction Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Urban Construction Technology Shenzhen Co Ltd filed Critical Ping An Urban Construction Technology Shenzhen Co Ltd
Priority to CN201910200507.4A priority Critical patent/CN110059485A/zh
Publication of CN110059485A publication Critical patent/CN110059485A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明应用于IOS研发管理测试领域,公开了一种IOS应用的私有API检测方法、终端及存储介质,方法包括:对应用代码执行String命令,以将结果作为第一API字符串集合;将第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的API字符串作为第二API字符串集合;通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行查找操作,以根据结果获得动态调用的私有API。从而检测到了动态调用的私有API,实现了私有API接口的识别功能测试。

Description

IOS应用的私有API检测方法、终端及存储介质
技术领域
本发明涉及IOS应用领域,尤其涉及一种IOS应用的私有API检测方法、终端及计算机可读存储介质。
背景技术
私有API是IOS系统(苹果移动设备操作系统)开发中未公开的一些方法。在将IOS应用上架至IOS系统应用商店前需要向运营企业提出申请,如果运营企业审核发现使用了私有API,应用将无法上架。因此在将应用包提交给运营企业进行审核之前需要进行自检排查。目前对私有API的排查主要是对IOS应用的api包使用class-dump命令,以将得到的字符串集合与预设私有API库取交集,但这种方法无法获得动态调用的私有API。
发明内容
本发明的主要目的在于提供一种IOS应用的私有API检测方法、终端及计算机可读存储介质,旨在解决目前在自检排查时无法获得动态调用的私有API的问题。
为实现上述目的,本发明提供一种IOS应用的私有API检测方法,所述方法包括步骤:
对应用代码执行String命令,以将执行String命令得到的结果作为第一应用程序编程接口API字符串集合;
将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;
通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。
可选地,所述通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作的步骤包括:
将第二API字符串集合中的每个API字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,并根据拼接得到的所有拼接字符串对运行状态下的应用代码执行动态查找操作。
可选地,所述将第二API字符串集合中的每个API字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,并根据拼接得到的所有拼接字符串对运行状态下的应用代码执行动态查找操作的步骤包括:
按照预设顺序依次选择所述第二API字符串集合中的API字符串;
每选择到API字符串时,将选择到的API字符串与@performSelector:@selector(privateApiName)调用方法进行拼接,形成拼接字符串;
根据该拼接字符串对运行状态下的应用代码执行动态查找操作,并判断该动态查找操作对应反馈的查找结果是否为空;
当该动态查找操作对应反馈的查找结果不为空时,输出查找结果,并继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止;
当该动态查找操作对应反馈的查找结果为空时,继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止。
可选地,所述根据查找结果获得动态调用的私有API的步骤之后,还包括:
对所述第二API字符串集合中的每个API字符串进行加密操作,以得到加密字符串,并将每个加密字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,以得到拼接加密字符串;
根据所有拼接加密字符串对运行状态下的应用代码执行二次动态查找操作,并根据二次动态查找结果获得加密后动态调用的私有API。
可选地,所述方法还包括步骤:
对应用包执行Class-dump命令,以将执行Class-dump命令得到的结果作为第三API字符串集合;
获取所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串,并将所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串确定为私有API。
可选地,在所有步骤之后,还包括:
修改所有私有API,并通过修改私有API后的应用代码生成应用包;
将所述应用包发送至IOS应用审核系统。
可选地,所述方法还包括步骤:
每间隔预设时间,更新所述预设私有API库。
为实现上述目的,本发明还提供一种终端,应用于IOS系统,所述终端包括:
执行模块,用于对应用代码执行String命令,以将执行String命令得到的结果作为第一应用程序编程接口API字符串集合;
查找模块,用于将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;
动态查找模块,用于通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。
为实现上述目的,本发明还提供一种终端,所述终端包括:通信模块、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的IOS应用的私有API检测方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的IOS应用的私有API检测方法的步骤。
本发明通过对应用代码执行String命令,以将执行String命令得到的结果作为第一应用程序编程接口API字符串集合;将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。从而在取得了与预设私有API库中私有API的方法名相同的第二API字符串集合后,结合@performSelector:@selector(privateApiName)调用方法动态查找出了动态调用的私有API,解决了目前使用Class-dunp无法获得动态调用的私有API的问题。
附图说明
图1是本发明实施例方案涉及的终端的结构示意图;
图2为本发明IOS应用的私有API检测方法一实施例的流程示意图;
图3为本发明终端一功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参看图1,图1为本发明所提供的终端的硬件结构示意图。所述终端应用于IOS系统(苹果移动设备操作系统),可以包括通信模块10、存储器20以及处理器30等部件。所述终端可以是手机、平板电脑以及智能可穿戴设备等等。在所述终端中,所述处理器30分别与所述存储器20以及所述通信模块10连接,所述存储器20上存储有计算机程序,所述计算机程序同时被处理器30执行,所述计算机程序执行时实现下述方法实施例的步骤。
通信模块10,可通过网络与外部通讯设备连接。通信模块10可以接收外部通讯设备发出的请求,还可以发送请求、指令及信息至所述外部通讯设备。所述外部通讯设备可以是其他控制终端、服务器和/或专用的数据监控平台。还需要说明的是,终端在与外部通讯设备进行交互时,可以基于IOS应用执行。
存储器20,可用于存储软件程序以及各种数据。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如对应用代码执行指令)等;存储数据区可包括数据库,存储数据区可存储根据终端的使用所创建的数据或信息等。此外,存储器20可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器30,是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。处理器30可包括一个或多个处理单元;可选地,处理器30可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器30中。
尽管图1未示出,但上述终端还可以包括电路控制模块,用于与电源连接,保证其他部件的正常工作。上述终端还可以包括显示模块,用于提取存储器20中的数据,并显示出终端的系统界面以及应用的交互界面。本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
基于上述硬件结构,提出本发明方法各个实施例。
参见图2,在本发明IOS应用的私有API检测方法的一实施例中,包括:
步骤S10,对应用代码执行String命令,以将执行String命令得到的结果作为第一API字符串集合;
其中应用代码即是指的能够生成IOS应用可执行文件的代码,对应用代码使用String命令可以获取应用代码中调用的API(Application Programming Interface,应用程序编程接口)名称相应的字符串。需要说明的是通过执行String命令获得的第一API字符串集合中包含有动态调用和静态调用的所有API对应的字符串,且集合中涉及的API信息包括方法、属性和动态调用的方法。
步骤S20,将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;
可以理解地是,预设私有API库中存储有苹果公司禁止使用的所有私有API字符串集合,且随着IOS系统的更新迭代,本身系统运营企业会对于API的界定进行更新,因此可以每间隔预设时间进行预设私有API库的更新,从而保证私有API检测的准确性。其中间隔的预设时间可以根据实际需要进行设置,可以是在进行私有API检测前触发更新,可以是每当IOS系统运营企业更新了API的界定范围时进行更新,可以是按照固定时间间隔进行更新。此外,预设私有API库中包含的API信息有API的方法名和API类名,所述预设私有API库例如可以是private.db库。
在本实施例中,由于第一API字符串集合中涉及的API信息包括方法、属性和动态调用的方法的限定,因此将第一API字符串集合与预设私有API库进行比较所得到的第二API字符串集合是依据相同API方法名确定的,即第二API字符串集合求取了第一API字符串集合和预设私有API库中方法名相同的私有API对应的字符串集合。
步骤S30,通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。
需要说明的是,@performSelector是IOS中一种方法调用方式,可以向一个对象传递任何信息,且不需要在编译的时候声明这些方法,所以通过Class-dump命令无法检测出动态调用的私有API。此外,第二API字符串集合中的API字符串仅是与预设私有API库中的私有API方法名相同,也无法直接得到动态调用的私有API,因此如果按照现有技术的方法执行对静态下的应用代码进行查找,无法找到未进行声明的动态调用的私有API。
为了解决如何找到动态调用的私有API的问题,可以将第二API字符串集合联合动态调用方法进行runtime(运行时刻)查找,确定第二API字符串集合中动态调用的私有API。可选地,通过第二API字符串集合联合动态调用方法进行runtime查找的方法可以是将第二API字符串集合中的每个API字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,并根据拼接得到的所有拼接字符串对运行状态下的应用代码执行动态查找操作。其中运行状态下的应用代码是对代码进行编译执行,因为只用在执行过程中动态调用的私有API才能被动态查找出来。
进一步地,结合@performSelector:@selector(privateApiName)和第二API字符串集合对动态调用的私有API进行查找时,可以每执行一行代码就进行一次动态调用查找,也可以完整的执行应用代码时进行动态调用查找操作,还可以是将代码行数划分间隔区域,按照间隔区域的划分依次进行动态调用排查。
对于@performSelector:@selector(privateApiName)调用方法和第二API字符串集合中API字符串的拼接过程可以是直接将需要动态查找的API字符串设置在@performSelector:@selector(privateApiName)调用方法的后面,在应用代码运行过程中执行上述方法的调用。当第二API字符串集合中所有API字符串均与@performSelector:@selector(privateApiName)调用方法完成拼接,并均进行过动态查找后,可以将每次动态查找操作的结果均认定为是动态调用的私有API。此外,查找结果可以对认定为私有API的代码位置进行高亮显示和/或标注,还可以记录应用代码的行数等具体位置,留待开发人员进行修改调整,也可以由测试用终端的用户进行修改。
本实施例通过对应用代码执行String命令,以将执行String命令得到的结果作为第一应用程序编程接口API字符串集合;将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。从而在取得了与预设私有API库中私有API的方法名相同的第二API字符串集合后,结合@performSelector:@selector(privateApiName)调用方法动态查找出了动态调用的私有API,解决了目前使用Class-dump无法获得动态调用的私有API的问题。
进一步地,在另一实施例中,所述步骤S30包括:
步骤S31,按照预设顺序依次选择所述第二API字符串集合中的API字符串;
可以理解地是,第二API字符串集合中存在多个API字符串,在进行结合调用方法动态查找时,可以直接调用第二API字符串集合自动完成字符串拼接,也可以按照设定顺序依次选择其中的API字符串,再进行字符串拼接。其中预设顺序可以是乱序,也可以是按照API名进行顺序/倒序选择。
步骤S32,每选择到API字符串时,将选择到的API字符串与@performSelector:@selector(privateApiName)调用方法进行拼接,形成拼接字符串;
对于单个API字符串与@performSelector:@selector(privateApiName)调用方法的拼接与前述实施例一致,执行时也可以参照执行,在此不做赘述。
步骤S33,根据该拼接字符串对运行状态下的应用代码执行动态查找操作,并判断该动态查找操作对应反馈的查找结果是否为空;若否,则执行步骤S34;若是,则执行步骤S35;
可以理解地是,当使用拼接字符串查找到的结果为空时,表示当前动态查找所使用的集合中的API字符串对应的私有API并没有进行动态调用;当使用拼接字符串查找到的结果不为空,表示当前使用的API字符串对应的私有API可能使用了一次或多次,可以定位其位置输出结果。
还需要说明的是,对于集合与集合间内容的查找,对于两个集合内的字符串等数据较小的情况,可以取出两个集合中的各个元素,并将两个集合中的每个元素进行对比查找,然后再返回结果。对于两个集合中某个集合中数据量较大的情况,例如预设私有API库,则可以以相对地数据量小的另一个API字符串集合中每一个API字符串作为关键词对较大数据量的集合进行遍历查找。
步骤S34,输出查找结果,并继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止;
步骤S35,继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止。
本方案给出了依次进行API字符串选择以及动态查找操作输出所有动态调用私有API的详细方案,解决了当前技术无法实现动态调用私有API的排查的技术问题。
进一步地,在又一实施例中,在执行步骤S30之前,或者步骤S30之后,还可以执行以下步骤:
步骤S40,对所述第二API字符串集合中的每个API字符串进行加密操作,以得到加密字符串,并将每个加密字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,以得到拼接加密字符串;
步骤S50,根据所有拼接加密字符串对运行状态下的应用代码执行二次动态查找操作,并根据二次动态查找结果获得加密后动态调用的私有API。
其中加密操作涉及的加密算法例如可以是非对称加密算法。
可以理解地是,为了保证API接口的安全性,通常在代码构建的过程中会对API接口进行加密,如果只是直接对原始的API字符串结合动态调用方法进行拼接是无法得到加密了的动态调用的私有API的,因此可以使用多种加密方式,分别对第二API字符串集合中的API字符串进行加密,再将加密后的字符串与动态调用方法结合进行运行状态下应用代码的二次动态查找操作,从而得到加密过的动态调用的私有API。本方案通过先对API字符串进行加密再拼接,能够进一步完善识别查找出所有可能的私有API,减少提交给IOS审核系统出现差错返回修改的几率。
进一步地,在其他实施例中,所述方法还可以包括:
步骤S60,对应用包执行Class-dump命令,以将执行Class-dump命令得到的结果作为第三API字符串集合;
其中应用包即是IOS应用上架前提交给IOS审核系统的可执行文件,Class-dump是一种反编译工具,可以从编译后的Objective-C的二进制文件中提取对应的数据结构及函数等声明,用来dump目标文件的类信息。也就是说得到的第三API字符串集合中包括类名。
还需要说明的是,Class-dump命令在使用前需要先在测试用的终端下载Class-dump工具,解压后会有Class-dump工具和源码文件,可以将Class-dump工具复制到/user/local/bin/目录或者/usr/local/bin/class-dump目录下,具体复制到哪个目录下根据OS系统版本确定,同时打开Terminal,执行命令赋予其执行权限,从而开始执行Class-dump命令,以完成第三API字符串集合的获取。
步骤S70,获取所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串,并将所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串确定为私有API。
本方案的执行可以与前述实施例中动态调用API的方案并行,或者存在先后顺序,只要在获得了第二API字符串集合之后即可。此外可以理解地是,API的方法名相同的情况下,API类名不一定相同,这使得第二API字符串集合中静态调用部分可能并不全是私有API,那么仍需要使用Class-dump命令依据类名相同的情况进行静态调用私有API的排查,从而帮助在提交审核前能够查全所有私有API。
还需要说明的是,上述确定集合中是否同时存在API字符串的方式可以参照前述关于集合间共同子集的方案实现,在此不做赘述。对于上述所有的私有API排查方式都可以多次反复的运行操作,同时还可以对查找出的结果进行人工排查,直到查找到的私有API数量不变为止再进行统一修改调试,或者也可以每次排查到且确定为私有API后直接修改,然后再次排查直至没有查出私有API为止。
当修改完私有API,暂时没有再查找到新的私有API时,可以自动将应用代码打包生成应用包,并提交发送给IOS应用审核系统,从而方便排查私有API后快速提交给官方,以提升IOS应用的上架速度。
本发明还提出一种终端,参见图3,所述终端包括:
执行模块10,用于对应用代码执行String命令,以将执行String命令得到的结果作为第一应用程序编程接口API字符串集合;
查找模块20,用于将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;
动态查找模块30,用于通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。
可选地,在另一实施例中,所述动态查找模块,还用于将第二API字符串集合中的每个API字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,并根据拼接得到的所有拼接字符串对运行状态下的应用代码执行动态查找操作。
可选地,在又一实施例中,所述动态查找模块包括:
选择单元,用于按照预设顺序依次选择所述第二API字符串集合中的API字符串;
拼接单元,用于每选择到API字符串时,将选择到的API字符串与@performSelector:@selector(privateApiName)调用方法进行拼接,形成拼接字符串;
查找判断单元,用于根据该拼接字符串对运行状态下的应用代码执行动态查找操作,并判断该动态查找操作对应反馈的查找结果是否为空;
输出单元,用于当该动态查找操作对应反馈的查找结果不为空时,输出查找结果,并触发所述选择单元继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止;
所述选择单元,还用于当该动态查找操作对应反馈的查找结果为空时,继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止。
可选地,在又一实施例中,所述终端还包括:
加密拼接模块,用于对所述第二API字符串集合中的每个API字符串进行加密操作,以得到加密字符串,并将每个加密字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,以得到拼接加密字符串;
二次动态查找模块,用于根据所有拼接加密字符串对运行状态下的应用代码执行二次动态查找操作,并根据二次动态查找结果获得加密后动态调用的私有API。
可选地,在又一实施例中,所述终端还包括:
所述执行模块,还用于对应用包执行Class-dump命令,以将执行Class-dump命令得到的结果作为第三API字符串集合;
确定模块,用于获取所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串,并将所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串确定为私有API。
可选地,在又一实施例中,所述终端还包括:
修改生成模块,用于修改所有私有API,并通过修改私有API后的应用代码生成应用包;
发送模块,用于将所述应用包发送至IOS应用审核系统。
可选地,在又一实施例中,所述终端还包括:
更新模块,用于每间隔预设时间,更新所述预设私有API库。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序。所述计算机可读存储介质可以是图1的服务器中的存储器20,也可以是如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干指令用以使得一台具有处理器的终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者服务端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者服务端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者服务端中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种IOS应用的私有API检测方法,其特征在于,所述方法包括步骤:
对应用代码执行String命令,以将执行String命令得到的结果作为第一应用程序编程接口API字符串集合;
将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;
通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。
2.根据权利要求1所述的IOS应用的私有API检测方法,其特征在于,所述通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作的步骤包括:
将第二API字符串集合中的每个API字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,并根据拼接得到的所有拼接字符串对运行状态下的应用代码执行动态查找操作。
3.根据权利要求2所述的IOS应用的私有API检测方法,其特征在于,所述将第二API字符串集合中的每个API字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,并根据拼接得到的所有拼接字符串对运行状态下的应用代码执行动态查找操作的步骤包括:
按照预设顺序依次选择所述第二API字符串集合中的API字符串;
每选择到API字符串时,将选择到的API字符串与@performSelector:@selector(privateApiName)调用方法进行拼接,形成拼接字符串;
根据该拼接字符串对运行状态下的应用代码执行动态查找操作,并判断该动态查找操作对应反馈的查找结果是否为空;
当该动态查找操作对应反馈的查找结果不为空时,输出查找结果,并继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止;
当该动态查找操作对应反馈的查找结果为空时,继续从所述第二API字符串集合中选择下一个API字符串,直至选择完所述第二API字符串集合中的API字符串为止。
4.根据权利要求2所述的IOS应用的私有API检测方法,其特征在于,所述根据查找结果获得动态调用的私有API的步骤之后,还包括:
对所述第二API字符串集合中的每个API字符串进行加密操作,以得到加密字符串,并将每个加密字符串分别与@performSelector:@selector(privateApiName)调用方法进行拼接,以得到拼接加密字符串;
根据所有拼接加密字符串对运行状态下的应用代码执行二次动态查找操作,并根据二次动态查找结果获得加密后动态调用的私有API。
5.根据权利要求4所述的IOS应用的私有API检测方法,其特征在于,所述方法还包括步骤:
对应用包执行Class-dump命令,以将执行Class-dump命令得到的结果作为第三API字符串集合;
获取所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串,并将所述第二API字符串集合和所述第三API字符串集合中均存在的API字符串确定为私有API。
6.根据权利要求5所述的IOS应用的私有API检测方法,其特征在于,在所有步骤之后,还包括:
修改所有私有API,并通过修改私有API后的应用代码生成应用包;
将所述应用包发送至IOS应用审核系统。
7.根据权利要求6所述的IOS应用的私有API检测方法,其特征在于,所述方法还包括步骤:
每间隔预设时间,更新所述预设私有API库。
8.一种终端,其特征在于,应用于IOS系统,所述终端包括:
执行模块,用于对应用代码执行String命令,以将执行String命令得到的结果作为第一应用程序编程接口API字符串集合;
查找模块,用于将所述第一API字符串集合中的每个API字符串输入至预设私有API库进行查找,以将预设私有API库以及第一API字符串集合中均存在的所有API字符串作为第二API字符串集合;
动态查找模块,用于通过@performSelector:@selector(privateApiName)调用方法和第二API字符串集合,对运行状态下的应用代码执行动态查找操作,以根据查找结果获得动态调用的私有API。
9.一种终端,其特征在于,所述终端包括:通信模块、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7任一项所述的IOS应用的私有API检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的IOS应用的私有API检测方法的步骤。
CN201910200507.4A 2019-03-16 2019-03-16 Ios应用的私有api检测方法、终端及存储介质 Pending CN110059485A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910200507.4A CN110059485A (zh) 2019-03-16 2019-03-16 Ios应用的私有api检测方法、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910200507.4A CN110059485A (zh) 2019-03-16 2019-03-16 Ios应用的私有api检测方法、终端及存储介质

Publications (1)

Publication Number Publication Date
CN110059485A true CN110059485A (zh) 2019-07-26

Family

ID=67316930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910200507.4A Pending CN110059485A (zh) 2019-03-16 2019-03-16 Ios应用的私有api检测方法、终端及存储介质

Country Status (1)

Country Link
CN (1) CN110059485A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026435A (zh) * 2019-11-29 2020-04-17 北京奇艺世纪科技有限公司 检测应用程序私有接口的方法、装置、设备及存储介质
CN111176874A (zh) * 2019-12-23 2020-05-19 京东数字科技控股有限公司 应用程序异常退出的处理方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104636455A (zh) * 2015-01-30 2015-05-20 腾讯科技(深圳)有限公司 应用程序映射信息的获取方法及装置
CN107346284A (zh) * 2016-05-05 2017-11-14 腾讯科技(深圳)有限公司 一种应用程序的检测方法及检测装置
CN109376021A (zh) * 2018-09-26 2019-02-22 深圳壹账通智能科技有限公司 接口调用的响应方法及服务器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104636455A (zh) * 2015-01-30 2015-05-20 腾讯科技(深圳)有限公司 应用程序映射信息的获取方法及装置
CN107346284A (zh) * 2016-05-05 2017-11-14 腾讯科技(深圳)有限公司 一种应用程序的检测方法及检测装置
CN109376021A (zh) * 2018-09-26 2019-02-22 深圳壹账通智能科技有限公司 接口调用的响应方法及服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LINKOUBIAN: "关于IOS私有API扫描", pages 1 - 9, Retrieved from the Internet <URL:https://www.jianshu.com/p/24026b30975f> *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026435A (zh) * 2019-11-29 2020-04-17 北京奇艺世纪科技有限公司 检测应用程序私有接口的方法、装置、设备及存储介质
CN111176874A (zh) * 2019-12-23 2020-05-19 京东数字科技控股有限公司 应用程序异常退出的处理方法、装置、设备及存储介质
CN111176874B (zh) * 2019-12-23 2022-04-12 京东科技控股股份有限公司 应用程序异常退出的处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US10204031B2 (en) Methods and system to create applications and distribute applications to a remote device
US8701081B2 (en) Hardware specific code generation
CN109446218A (zh) Sql语句生成方法、装置及计算机可读存储介质
CN109101415A (zh) 基于数据库比对的接口测试方法、系统、设备和存储介质
CN111142903A (zh) 一种基于文件对比的配置文件交互式更新方法及装置
CN109189469B (zh) 基于反射的安卓应用微服务化方法及系统
CN107632827B (zh) 应用的安装包的生成方法及装置
CN104461898A (zh) 应用测试的方法、中控服务器、测试终端及系统
US9965257B2 (en) Automatic configuration of project system from project capabilities
CN104572114A (zh) 一种绑定装置、应用更新装置及方法以及应用
Dincturk et al. A model-based approach for crawling rich internet applications
CN112256321A (zh) 静态库打包方法、装置、计算机设备和存储介质
CN107194250A (zh) 内存代码的完整性校验方法及装置
US11204860B2 (en) Methods and apparatuses for generating smart contract test case
CN103714002B (zh) 基于配置系统的项目测试方法及装置
US9582270B2 (en) Effective feature location in large legacy systems
CN109918113A (zh) Ios应用热修复/热更新方法、服务器及存储介质
CN110059485A (zh) Ios应用的私有api检测方法、终端及存储介质
CN111538659B (zh) 业务场景的接口测试方法、系统、电子设备和存储介质
CN115237805A (zh) 测试案例数据准备方法及装置
CN106598662A (zh) 基于android的应用加载方法及装置
US10310962B2 (en) Infrastructure rule generation
Keating Mastering Ansible
CN109918300B (zh) 一种测试数据准备方法、装置、终端及存储介质
CN113268420A (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