IOS中保护钥匙串数据的方法、存储介质、设备及系统技术方案

技术编号:20917701 阅读:23 留言:0更新日期:2019-04-20 09:56
本发明专利技术公开了一种IOS中保护钥匙串数据的方法、存储介质、设备及系统,涉及IOS的数据保护技术领域。该方法包括:在当前IOS系统中创设HOOK功能;获取用于读取钥匙串数据的读取函数;获取用于获取当前函数调用堆栈信息的堆栈信息函数;使用创设的HOOK功能,对获取的读取函数进行HOOK,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法;每当读取函数的实现方法被调用时,会被拦截并执行自定义实现方法,从而获取到当前调用读取函数的调用堆栈信息;将获取到的调用堆栈信息上报至服务器进行合法性校验。本发明专利技术能有效防止黑客程序读取钥匙串中的绝密数据,保护了钥匙串数据的安全性。

The Method, Storage Medium, Equipment and System of Protecting Keystring Data in IOS

The invention discloses a method, storage medium, equipment and system for protecting key string data in IOS, and relates to the technical field of data protection in IOS. The method includes: creating HOOK function in current IOS system; acquiring reading function for reading key string data; acquiring stack information function for acquiring stack information of current function call; using created HOOK function, HOOK is applied to acquired reading function, so that the implementation method of the reading function is replaced by a custom implementation method with stack information function; Whenever the implementation method of the read function is invoked, it will be intercepted and executed the custom implementation method, so as to obtain the call stack information of the current call to the read function, and report the obtained call stack information to the server for validation. The invention can effectively prevent the hacker program from reading the confidential data in the key string and protect the security of the key string data.

【技术实现步骤摘要】
IOS中保护钥匙串数据的方法、存储介质、设备及系统
本专利技术涉及IOS的数据保护
,具体来讲是一种IOS中保护钥匙串数据的方法、存储介质、设备及系统。
技术介绍
目前,随着移动设备的日益普及,移动应用产业尤其是IOS应用得到飞速的发展,同时其开发模式和代码框架也都发生了巨大的变化。对于IOS平台来说,其程序又分为主程序和模块文件,而模块文件则是dylib文件(dylib文件是IOS平台上的动态链接库文件,类似于Windows平台上的DLL文件,类似于Android平台的SO文件)。通常,对于需要编写一些功能模块注入到对应的进程中时,都是编写一个dylib文件,然后将该dylib文件注入到对应的进程中运行。而对于一些想要获取另一个IOS应用的数据时也都是编写一个dylib文件。同时,IOS也希望能够免输入密码账号进行登录的功能,由于IOS系统存储的数据都是在sandbox里面,一旦删除APP,则sandbox也不存在了,为此苹果对开发者提供了一个keychain(钥匙串),其用于提供存储一些私密数据如密码、证书等方便用户免输入密码账号等进行登录。所以,IOS系统的应用开发者通常会使用钥匙串来存储关键数据。但是,一旦黑客通过注入dylib文件可以读取到钥匙串中保存的关键数据,这就会给用户造成严重的损失,安全风险较大。因此,如何有效防止黑客程序读取IOS的钥匙串中的绝密数据,保护钥匙串数据的安全性是本领域技术人员亟待解决的问题。
技术实现思路
本专利技术的目的是为了克服上述
技术介绍
的不足,提供一种IOS中保护钥匙串数据的方法、存储介质、设备及系统,通过对钥匙串数据的访问者进行校验,有效防止黑客程序读取钥匙串中的绝密数据,保护了钥匙串数据的安全性。为达到以上目的,本专利技术采取的技术方案是:提供一种IOS中保护钥匙串数据的方法,该方法包括以下步骤:S1、在当前IOS系统中创设HOOK功能,该HOOK功能用于实现:在原函数内加入新方法,并通过方法的绑定使得原函数被调用时会被拦截并执行加入的新方法;S2、获取当前IOS系统中已有的用于读取钥匙串数据的读取函数;S3、获取当前IOS系统中已有的用于获取当前函数调用堆栈信息的堆栈信息函数;S4、使用创设的HOOK功能,对获取的读取函数进行HOOK,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法;S5、每当读取函数的实现方法被调用时,会被拦截并执行加入有堆栈信息函数的自定义实现方法,从而获取到当前调用读取函数的调用堆栈信息;S6、将获取到的调用堆栈信息上报至服务器进行合法性校验。在上述技术方案的基础上,步骤S1具体包括以下操作:在当前IOS系统中创建HOOK功能,并对该HOOK功能的实现进行设置,使其完成以下操作:通过传入参数和方法名获取原函数的类方法;根据获取的类方法的方法名,获取到该类方法所对应的IMP指针;在原函数中添加需要加入的新方法;通过替换原函数的类方法所对应的IMP指针,将新方法与原函数进行绑定,使得原函数被调用时会被拦截并执行该新方法。在上述技术方案的基础上,步骤S4中,使用创设的HOOK功能,对获取的用于读取钥匙串数据的读取函数进行HOOK的具体操作如下:根据读取函数的类名和该读取函数的实现方法名,获取该读取函数的实现方法;根据获取到的实现方法,获取该实现方法所对应的IMP指针;在读取函数中增设一个加入有堆栈信息函数的自定义实现方法;通过替换读取函数的实现方法所对应的IMP指针,将自定义实现方法与读取函数进行绑定,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法。在上述技术方案的基础上,服务器进行合法性校验的具体操作为:服务器接收到上报的调用堆栈信息后,将该调用堆栈信息与预设好的正确信息列表进行比对;一旦上报的调用堆栈信息不在该正确信息列表中,则说明此读取操作不合法,服务器对该读取操作进行封禁或其他阻止措施。本专利技术还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述IOS中保护钥匙串数据的方法的步骤。本专利技术还提供一种IOS中保护钥匙串数据的设备,包括存储器、处理器及存储在存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述IOS中保护钥匙串数据的方法的步骤。本专利技术还提供一种IOS中保护钥匙串数据的系统,该系统包括HOOK功能创设模块、读取函数获取模块、堆栈信息函数获取模块、读取函数HOOK模块、堆栈信息获取模块和堆栈信息上报模块;所述HOOK功能创设模块用于:在当前IOS系统中创设HOOK功能,该HOOK功能用于实现:在原函数内加入新方法,并通过方法的绑定使得原函数被调用时会被拦截并执行加入的新方法;所述读取函数获取模块用于:获取当前IOS系统中已有的用于读取钥匙串数据的读取函数;所述堆栈信息函数获取模块用于:获取当前IOS系统中已有的用于获取当前函数调用堆栈信息的堆栈信息函数;所述读取函数HOOK模块用于:使用创设的HOOK功能,对获取的读取函数进行HOOK,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法;所述堆栈信息获取模块用于:每当读取函数的实现方法被调用时,会被拦截并执行加入有堆栈信息函数的自定义实现方法,从而获取到当前调用读取函数的调用堆栈信息;所述堆栈信息上报模块用于:将获取到的调用堆栈信息上报至服务器进行合法性校验。在上述技术方案的基础上,所述HOOK功能创设模块创设HOOK功能的具体流程为:在当前IOS系统中创建HOOK功能,并对该HOOK功能的实现进行设置,使其完成以下操作:通过传入参数和方法名获取原函数的类方法;根据获取的类方法的方法名,获取到该类方法所对应的IMP指针;在原函数中添加需要加入的新方法;通过替换原函数的类方法所对应的IMP指针,将新方法与原函数进行绑定,使得原函数被调用时会被拦截并执行该新方法。在上述技术方案的基础上,所述读取函数HOOK模块使用创设的HOOK功能,对获取的用于读取钥匙串数据的读取函数进行HOOK的具体流程为:根据读取函数的类名和该读取函数的实现方法名,获取该读取函数的实现方法;根据获取到的实现方法,获取该实现方法所对应的IMP指针;在读取函数中增设一个加入有堆栈信息函数的自定义实现方法;通过替换读取函数的实现方法所对应的IMP指针,将自定义实现方法与读取函数进行绑定,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法。在上述技术方案的基础上,服务器进行合法性校验的具体操作为:服务器接收到上报的调用堆栈信息后,将该调用堆栈信息与预设好的正确信息列表进行比对;一旦上报的调用堆栈信息不在该正确信息列表中,则说明此读取操作不合法,服务器对该读取操作进行封禁或其他阻止措施。本专利技术的有益效果在于:本专利技术中,通过创设的HOOK功能对系统的读取钥匙串的功能进行HOOK,使得该读取函数的实现方法被替换为加入有用于获取当前函数调用堆栈信息的堆栈信息函数的自定义实现方法,该自定义实现方法能在实现钥匙串数据读取功能的同时实现调用堆栈信息的获取功能。每当用于读取钥匙串数据的读取函数的实现方法被调用时,会被拦截并执行加入有堆栈信息函数的自定义实现方法,从而获取到当前调用读取函数的调用堆栈信息,也本文档来自技高网...

【技术保护点】
1.一种IOS中保护钥匙串数据的方法,其特征在于,该方法包括以下步骤:S1、在当前IOS系统中创设HOOK功能,该HOOK功能用于实现:在原函数内加入新方法,并通过方法的绑定使得原函数被调用时会被拦截并执行加入的新方法;S2、获取当前IOS系统中已有的用于读取钥匙串数据的读取函数;S3、获取当前IOS系统中已有的用于获取当前函数调用堆栈信息的堆栈信息函数;S4、使用创设的HOOK功能,对获取的读取函数进行HOOK,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法;S5、每当读取函数的实现方法被调用时,会被拦截并执行加入有堆栈信息函数的自定义实现方法,从而获取到当前调用读取函数的调用堆栈信息;S6、将获取到的调用堆栈信息上报至服务器进行合法性校验。

【技术特征摘要】
1.一种IOS中保护钥匙串数据的方法,其特征在于,该方法包括以下步骤:S1、在当前IOS系统中创设HOOK功能,该HOOK功能用于实现:在原函数内加入新方法,并通过方法的绑定使得原函数被调用时会被拦截并执行加入的新方法;S2、获取当前IOS系统中已有的用于读取钥匙串数据的读取函数;S3、获取当前IOS系统中已有的用于获取当前函数调用堆栈信息的堆栈信息函数;S4、使用创设的HOOK功能,对获取的读取函数进行HOOK,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法;S5、每当读取函数的实现方法被调用时,会被拦截并执行加入有堆栈信息函数的自定义实现方法,从而获取到当前调用读取函数的调用堆栈信息;S6、将获取到的调用堆栈信息上报至服务器进行合法性校验。2.如权利要求1所述的IOS中保护钥匙串数据的方法,其特征在于,步骤S1具体包括以下操作:在当前IOS系统中创建HOOK功能,并对该HOOK功能的实现进行设置,使其完成以下操作:通过传入参数和方法名获取原函数的类方法;根据获取的类方法的方法名,获取到该类方法所对应的IMP指针;在原函数中添加需要加入的新方法;通过替换原函数的类方法所对应的IMP指针,将新方法与原函数进行绑定,使得原函数被调用时会被拦截并执行该新方法。3.如权利要求1所述的IOS中保护钥匙串数据的方法,其特征在于:步骤S4中,使用创设的HOOK功能,对获取的用于读取钥匙串数据的读取函数进行HOOK的具体操作如下:根据读取函数的类名和该读取函数的实现方法名,获取该读取函数的实现方法;根据获取到的实现方法,获取该实现方法所对应的IMP指针;在读取函数中增设一个加入有堆栈信息函数的自定义实现方法;通过替换读取函数的实现方法所对应的IMP指针,将自定义实现方法与读取函数进行绑定,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法。4.如权利要求1所述的IOS中保护钥匙串数据的方法,其特征在于,服务器进行合法性校验的具体操作为:服务器接收到上报的调用堆栈信息后,将该调用堆栈信息与预设好的正确信息列表进行比对;一旦上报的调用堆栈信息不在该正确信息列表中,则说明此读取操作不合法,服务器对该读取操作进行封禁或其他阻止措施。5.一种存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现上述权利要求1至4中任一项所述方法的步骤。6.一种IOS中保护钥匙串数据的设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现上述权利要求1至4中...

【专利技术属性】
技术研发人员:周志刚张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1