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中任一项所述方法的步骤。
7.一种IOS中保护钥匙串数据的系统,其特征在于:该系统包括HOOK功能创设模块、读取函数获取模块、堆栈信息函数获取模块、读取函数HOOK模块、堆栈信息获取模块和堆栈信息上报模块;
所述HOOK功能创设模块用于:在当前IOS系统中创设HOOK功能,该HOOK功能用于实现:在原函数内加入新方法,并通过方法的绑定使得原函数被调用时会被拦截并执行加入的新方法;
所述读取函数获取模块用于:获取当前IOS系统中已有的用于读取钥匙串数据的读取函数;
所述堆栈信息函数获取模块用于:获取当前IOS系统中已有的用于获取当前函数调用堆栈信息的堆栈信息函数;
所述读取函数HOOK模块用于:使用创设的HOOK功能,对获取的用于读取钥匙串数据的读取函数进行HOOK,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法;
所述堆栈信息获取模块用于:每当读取函数的实现方法被调用时,会被拦截并执行加入有堆栈信息函数的自定义实现方法,从而获取到当前调用读取函数的调用堆栈信息;
所述堆栈信息上报模块用于:将获取到的调用堆栈信息上报至服务器进行合法性校验。
8.如权利要求7所述的IOS中保护钥匙串数据的系统,其特征在于,所述HOOK功能创设模块创设HOOK功能的具体流程为:在当前IOS系统中创建HOOK功能,并对该HOOK功能的实现进行设置,使其完成以下操作:通过传入参数和方法名获取原函数的类方法;根据获取的类方法的方法名,获取到该类方法所对应的IMP指针;在原函数中添加需要加入的新方法;通过替换原函数的类方法所对应的IMP指针,将新方法与原函数进行绑定,使得原函数被调用时会被拦截并执行该新方法。
9.如权利要求7所述的IOS中保护钥匙串数据的系统,其特征在于,所述读取函数HOOK模块使用创设的HOOK功能,对获取的用于读取钥匙串数据的读取函数进行HOOK的具体流程为:根据读取函数的类名和该读取函数的实现方法名,获取该读取函数的实现方法;
根据获取到的实现方法,获取该实现方法所对应的IMP指针;
在读取函数中增设一个加入有堆栈信息函数的自定义实现方法;
通过替换读取函数的实现方法所对应的IMP指针,将自定义实现方法与读取函数进行绑定,使得该读取函数的实现方法被替换为加入有堆栈信息函数的自定义实现方法。
10.如权利要求7所述的IOS中保护钥匙串数据的系统,其特征在于:服务器进行合法性校验的具体操作为:服务器接收到上报的调用堆栈信息后,将该调用堆栈信息与预设好的正确信息列表进行比对;一旦上报的调用堆栈信息不在该正确信息列表中,则说明此读取操作不合法,服务器对该读取操作进行封禁或其他阻止措施。