发明内容
本发明的主要目的在于解决开启开发者模式不便的问题。
本发明第一方面提供了一种基于iOS16的开发者模式启动方法,包括:
当检测到待启动的终端设备时,获取设备信息;
根据所述设备信息,启动所述终端设备中移动文件完整性校验锁定服务功能;
将预设的关闭锁定服务数据包发送至所述终端设备,其中,所述关闭锁定服务数据包用于关闭所述移动文件完整性校验锁定服务功能;
当检测到所述终端设备针对所述关闭锁定服务数据包反馈的返回数据包时,根据所述返回数据包,显示模式启动通知。
可选的,在本发明第一方面的第一种实现方式中,所述根据所述设备信息,启动所述终端设备中移动文件完整性校验锁定服务功能包括:
根据所述设备信息,生成服务文件;
根据所述服务文件,生成指针地址;
根据所述指针地址,调用所述终端设备的启动函数,并得到所述服务句柄对应的参数值;
根据所述参数值,确定所述移动文件完整性校验锁定服务功能启动成功。
可选的,在本发明第一方面的第二种实现方式中,所述服务文件包括标志变量、socket句柄、服务句柄、连接句柄和设备句柄。
可选的,在本发明第一方面的第三种实现方式中,在所述当所述参数值为预设的启动值时,确定所述移动文件完整性校验锁定服务功能启动成功之前,还包括:
基于预设的操作锁,将所述服务文件插入预设的服务列表中。
可选的,在本发明第一方面的第四种实现方式中,在所述将预设的关闭锁定服务数据包发送至所述终端设备之前,还包括:
基于数据流函数,调用分配缓存区,得到数据流信息;
基于预设的写数据流模式,加载所述数据流信息;
基于所述数据流信息,将预设的信息属性列表转换为二进制数据流,得到关闭锁定服务数据包。
可选的,在本发明第一方面的第五种实现方式中,所述将预设的关闭锁定服务数据包发送至所述终端设备包括:
根据所述服务句柄,将所述关闭锁定服务数据包的大小值发送至所述终端设备;
当检测到所述终端设备根据所述大小值反馈的发送成功指令时,根据所述服务句柄,发送所述关闭锁定服务数据包至所述终端设备。
可选的,在本发明第一方面的第六种实现方式中,所述根据所述服务句柄,发送所述关闭锁定服务数据包至所述终端设备包括:
将所述服务句柄作为第一参数,将所述关闭锁定服务数据包的地址偏移5和所述大小值作为第二参数,将所述关闭锁定服务数据包的总大小与已发送的关闭锁定服务数据包的大小的差值作为第三参数,循环调用预设的发送函数;
基于所述发送函数,将所述关闭锁定服务数据包发送至所述终端设备,
并接收所述终端设备发送的返回数据包,直至所述关闭锁定服务数据包发送0完毕。
可选的,在本发明第一方面的第七种实现方式中,所述根据所述返回数据包,显示模式启动通知包括:
根据所述返回数据包,创建数据字典;
根据所述数据字典中的开启键值,确定所述终端设备是否开启成功;5若未开启失败,则判断所述开启键值对应的数据类型是否为布尔类型;
若是,则生成并显示模式启动通知。
本发明第二方面提供了一种基于iOS16的开发者模式启动设备,包括:
存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至
少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述0指令,以使得所述基于iOS16的开发者模式启动设备执行上述的基于iOS16的开发者模式启动方法。
本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于
iOS16的开发者模式启动方法。
5本发明提供的技术方案中,首先获取连接的终端设备的设备信息,然后
基于设备信息,启动终端设备的移动文件完整性校验锁定服务功能。在开发者模式中,移动文件完整性校验锁定服务功能是基础功能,然后将关闭锁定服务数据包发送至终端设备,关闭锁定服务数据包能够锁定移动文件完整性
校验锁定服务功能,该功能被锁定无法使用时,设备终端会显示开发者模式,0以告知用户由于移动完整性校验锁定服务功能被锁定,开发者模式是否也要锁定或禁用,故而在设备终端显示并打开开发者模式,其反馈一返回数据包。根据返回数据包的内容,可判断开发者模式是否打开成功,并显示模式启动通知,以指引用户开发者模式启动成功与否。
具体实施方式
本发明实施例提供了一种基于iOS16的开发者模式启动方法和相关设备,用于解决基于iOS 16系统,开发者模式开启不便的问题。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,本发明实施例中基于iOS16的开发者模式启动方法可应用于windows系统等,具有较强的兼容性,能够更方便地启动开发者模式,为方便说明,该开发者模式启动方法由开发者启动程序执行,请参阅图1和图2,其具体过程包括:
S10、当检测到待启动的终端设备时,获取设备信息。
具体地,当需要将某一终端设备开启开发者模式时,先将终端设备连入开发者模式启动程序中,连接方式可采用无线连接或有线连接。开发者模式启动程序获取设备信息。
在此之前,开发者模式启动程序自身也需要获取并初始化相应的管理信息,以为设备终端提供服务。管理信息包括设备参数、服务管理类、iOS设置管理类、设备管理类、设备状态函数和设备操作管理模块。设备参数包括设备日志参数,信号量,日志文件,以及日志线程。服务管理类和iOS设置管理类通过管理类获取设备对象,将服务列表绑定到设备对象中,具体类可包括AMFI(com.apple.driver.AppleMobileFileIntegrity)的服务,该服务是管理iOS代码授权基础的服务。设备管理类可用于创建设备信息列表、设备属性管理以及设备列表操作锁。该列表信息包含了设备是否激活,基带版本,系统版本、蓝牙地址、WiFi地址、设备唯一值、序列号等设备的信息数据,设备列表操作锁能够避免多设备添加和删除设备iOS设备操作时,列表更新不同步。设备状态函数能够绑定设备通知回调,例如常见的三种模式的通知回调:普通模式、DFU模式,以及恢复模式。设备操作管理模块包含了对设备管理的不同功能,是管理的基础。
为检测到终端设备,可创建监听设备线程和设备连接回调函数。该函数可实现了信任连接开始、信任完成、普通模式连接成功、连接失败、普通模式设备断开成功、普通模式设备断开失败的、DFU模式和恢复模式等响应函数。在普通连接成功回调函数中,通过获设备句柄,遍历查询当前设备信息列表中是否含有当前设备句柄,获取当前终端设备的设备信息。此外,还可判断设备是否被锁定,通过苹果移动设备获取接口类型函数判断是否为wifi连接类型。
在启动开发者模式过程中需要进行数据传输,因此双方设备的信任关系需要建立。预先注册设备监听函数,并为设备监听函数创建信任时间阈值。当连接时间小于或等于该信任时间阈值时,则双方建立信任连接,信任时间阈值可选用60秒。设备监听函数可针对普通模式、DFU模式和恢复模式,并通知函数对应绑定前文的响应函数。
此外,对于初次连入的终端设备,设备监听函数会转入信任处理函数,该信任处理函数会循环判断终端设备是否需要进行配对,若需要进行配对,则执行配对请求,终端设备相应地显示信任按钮,若用户点击终端设备中的信任选项,则终端设备根据用户的操作,与开发者模式启动程序建立信任连接。
值得一提的是,设备信息中包括设备版本号、系统版本号等,根据系统版本号可判断当前的系统是否支持打开开发者模式。通常系统版本号的数值大于20A5283,则支持打开开发者模式。
S20、根据所述设备信息,启动所述终端设备中移动文件完整性校验锁定服务功能。
具体地,苹果系统在iOS16加入开发者模式,是为授予或拒绝,第三方应用程序安装或使用开发者专用的功能,控制授权的模块就依赖于苹果移动文件完整性校验锁定服务功能,该功能是iOS授权的基础。因此当设置禁用苹果移动文件完整性校验锁定成功时,iOS系统会显示开发者模式的选项,以让用户确定是否需要关闭开发者模式。为关闭移动文件完整性校验锁定服务功能,首先需要启动该服务功能,再进行关闭文件完整性校验锁定服务功能。故先根据所获的设备信息,启动所述终端设备中移动文件完整性校验锁定服务功能。
在启动过程中,由于启动一段时间后,苹果系统会中断会话,避免长期未会话连接导致隐私窃取,因此,检查当前连接状态的,获取当前设备句柄,执行设备是否有效存在的判断函数。如果返回错误值不为空,则重新获取句柄并校验是否有效。调用系统的停止会话函数,中止上一次会话,并陆续执行断开链接,检查是否配对并重新链接,并开启新会话的过程。保证此后工作尽量在一个会话时间内,以保持会话连接的稳定性。
通过前面获取的设备ID,遍历当前设备服务管理信息类中是否支持AMFILockDown的服务,以及该服务是否已经创建,如果支持并无法遍历到该服务,则执行开启苹果移动文件完整性校验锁定的服务的函数,否则直接返回已经开启过该服务的信息。同时,基于预设的操作锁,遍历该服务,避免线程存在之间不同步问题。
开启移动文件完整性校验锁定的方式,可通过多种方式开启,本方案提供一种启动移动文件完整性校验锁定服务功能的方法,具体包括:
A10、根据所述设备信息,生成服务文件。
具体地,首先根据设备信息,创建服务文件,预先设定服务文件的组成,本实施例中,所述服务文件包括标志变量、socket句柄、服务句柄、连接句柄和设备句柄。标志变量为flag标志,新开启的服务这个值为1,否则为0。socket句柄表示服务连接的socket句柄。服务句柄是指ServiceHandle,用于后续管理和操作该服务。连接句柄的值为DeviceConnection,表示设备连接的句柄,用于保持当前设备的连接句柄。第五个值为设备句柄,用于后续管理和操作设备。通过移动设备服务连接获取socket函数,得到该ServiceHandle服务句柄对应的socket,存放到当前服务文件的socket句柄中。
得到设备信息后,基于服务文件的组成,提取设备信息中相应的值,得到服务文件。
A20、根据所述服务文件,生成指针地址。
具体地,根据服务文件,可生成能够调用启动函数的指针地址。将设备句柄、服务名称以及服务句柄作为指针地址。AMFI是一个iOS内核扩展,是iOS代码授权模型的基础,同时也是iOS沙盒Sandbox的(com.apple.security.sandbox)依赖项之一。服务名称可采用AMFILockDown服务名称。
A30、根据所述指针地址,调用所述终端设备的启动函数,并得到所述服务句柄对应的参数值。
具体地,将指针地址作为参数,调用终端设备的启动函数,一般为苹果系统的移动设备安全启动服务函数。启动成功后,将指向ServiceHandle服务句柄的地址作为其对应的参数值。
A40、根据所述参数值,确定所述移动文件完整性校验锁定服务功能启动成功。
具体地,参数值内容不为空,即得到对应服务句柄;若指向ServiceHandle服务句柄为空,则开启失败,陆续执行断开链接,检查是否配对,重新链接,并开启新会话的过程,重新再次开启服务。
进一步地,基于预设的操作锁,将更新后的服务文件插入预设的服务列表中。避免操作冲突。
S30、将预设的关闭锁定服务数据包发送至所述终端设备。
具体地,所述关闭锁定服务数据包用于关闭所述移动文件完整性校验锁定服务功能。关闭锁定服务数据包的构造可根据系统本身的移动文件完整性校验锁定服务功能进行调整测试得到。本实施例提出一种可预先创建关闭锁定服务数据包的方法。预先设定一信息属性列表,该信息属性列表保护了包含标识和配置对应的键值的内容.添加设置作用键值“action”,键值为int32的整型,内容为0,表示禁用苹果移动文件完整性校验锁定服务功能。信息属性列表可以plist数据字典的形式生成。首先,基于数据流函数,调用分配缓存区,得到数据流信息。然后基于预设的写数据流模式,加载所述数据流信息。最后,基于所述数据流信息,将预设的信息属性列表转换为二进制数据流,得到关闭锁定服务数据包。同时关闭该数据流信息。
在数据传输过程中,若传输过程中出现丢包,开发者模式无法正常打开,故在本实施例中,为了保证传输的稳定性和准确性,传输过程先将待传输的数据的大小值发送至终端设备。首先根据所述服务句柄,将所述关闭锁定服务数据包的大小值发送至所述终端设备。将获取的二进制数据的大小从
TCP/IP网络顺序转换为主机字节顺序,从前文中的服务文件中的服务句柄的值作为参数,调用对于终端设备的移动服务连接发送函数,发送转换后的关闭锁定服务数据包的大小值,告知终端设备需要传输的数据的大小。若终端设备返回值小于或等于零,则说明发送失败;若终端设备返回值大于零,则终端设备发送成功,开发模式启动程序相当于收到了发送成功指令。
当检测到所述终端设备根据所述大小值反馈的发送成功指令时,根据所述服务句柄,发送所述关闭锁定服务数据包至所述终端设备。先将所述服务句柄作为第一参数,将所述关闭锁定服务数据包的地址偏移和所述大小值作为第二参数,将所述关闭锁定服务数据包的总大小与已发送的关闭锁定服务数据包的大小的差值作为第三参数,循环调用预设的发送函数。接着发送二进制数据包,同样将从前面的设备服务信息结构中取出第三个变量ServiceHandle服务句柄的值作为第一个参数,将当前要发送的数据的地址偏移加上已经发送的数据大小作的新地址偏移作为第二个参数,第三个参数为关闭锁定服务数据包的总大小减去已经发送的数据包大小。基于所述发送函数,将所述关闭锁定服务数据包发送至所述终端设备,并接收所述终端设备发送的返回数据包,直至所述关闭锁定服务数据包发送完毕。
S40、当检测到所述终端设备针对所述关闭锁定服务数据包反馈的返回数据包时,根据所述返回数据包,显示模式启动通知。
具体地,返回数据包用于指示关闭锁定服务数据包是否已经完全发送至终端设备,若关闭锁定服务数据包已经成功发送至终端设备,终端设备主动提示是否禁用开发者模式的通知并显示开发者模式。开发者模式启动程序确定终端设备已经接收到关闭锁定服务数据包,则显示模式启动通知,告知用户开发者模式已经启动。
进一步地,从服务文件中取出第三个变量ServiceHandle服务句柄的值,作为参数调用苹果移动服务连接接收函数,接收对应数据和大小,将大小从TCP/IP网络顺序转换为主机字节顺序,转换后创建对应大小内存空间,将对应内存地址和数据大小作为参数,同时继续调用苹果移动服务连接接收函数,直到返回数据包大小返回值小于等于0时代表,所有数据接收完毕。
进一步地,在显示过程中,先根据所述返回数据包,创建数据字典。此处数据字典可为苹果信息属性列表Plist数据字典。然后根据所述数据字典中的开启键值,确定所述终端设备是否开启成功。例如,开启键值为“success”为成功,键值为“false”,则开启失败。若为“ture”,则并非开启成功,但也未开启失败,因此先判断开启键值对应的数据类型是否为布尔类型。若是,则说明移动文件完整性校验锁定已经生效,因此终端设备已经显示了可开启开发者模式的选项,故生成并显示模式启动通知。
模式启动通知可在提示用户如何进行后续的操作以使用开发者模式。例如提示用户打开iOS设备的设置选项,点击“隐私与安全性”,切换到最下面,可以看到开发者模式的选项已经出来,输入解锁密码完成开启。
基于iOS16的开发者模式启动方法的描述,下面从硬件处理的角度对本发明实施例中基于iOS16的开发者模式启动设备进行详细描述。
图3是本发明实施例提供的一种基于iOS16的开发者模式启动设备的结构示意图,该基于iOS16的开发者模式启动设备100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)110(例如,一个或一个以上处理器)和存储器120,一个或一个以上存储应用程序133或数据132的存储介质130(例如一个或一个以上海量存储设备)。其中,存储器120和存储介质130可以是短暂存储或持久存储。存储在存储介质130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于iOS16的开发者模式启动设备100中的一系列指令操作。更进一步地,处理器110可以设置为与存储介质130通信,在基于iOS16的开发者模式启动设备100上执行存储介质130中的一系列指令操作。
基于iOS16的开发者模式启动设备100还可以包括一个或一个以上电源140,一个或一个以上有线或无线网络接口150,一个或一个以上输入输出接口160,和/或,一个或一个以上操作系统131,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图1示出的基于iOS16的开发者模式启动设备结构并不构成对基于iOS16的开发者模式启动设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于iOS16的开发者模式启动方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。