1.一种iOS平台文件读取保护方法,其特征在于,包括:S1:获取iOS系统中的所有Mach‑o文件及每个Mach‑o文件所对应的内存起始地址,并根据内存起始地址获取Mach‑o文件在内存中的虚拟内存地址;
S2:根据Mach‑o文件在内存中的虚拟内存地址,解析Mach‑o文件,得到每个Mach‑o文件内每个函数的名称和指针,遍历每个函数的名称,找到每个Mach‑o文件内的open函数;
S3:编写一hook函数,所述hook函数用于获取open函数的调用堆栈信息,其中,所述hook函数用于将目标函数的内存地址进行替换成设定地址,当目标函数执行时,跳转至设定地址以进行调用堆栈信息的获取,所述目标函数为open函数;
S4:当使用open函数进行文件内容读取操作时,则使用hook函数获取当前open函数的调用堆栈信息,并将获取的调用堆栈信息上传至后台服务器以对获取的调用堆栈信息的合法性进行判断,若合法,则不做处理,若不合法,则禁止当前open函数的文件读取操作;
其中,S4中,对于当前open函数的调用堆栈信息的获取,具体为:S401:根据Mach‑o文件的虚拟内存地址和指针,获取Mach‑o文件中open函数的内存地址;
S402:将open函数的内存地址替换成设定地址;
S403:open函数跳转至设定地址,进行open函数的调用堆栈信息的获取。
2.如权利要求1所述的一种iOS平台文件读取保护方法,其特征在于:所述后台服务器包括一数据库;
所述数据库中存储有所有open函数的所有合法调用堆栈信息;
判断获取的调用堆栈信息是否存在于数据库中,若存在,则获取的调用堆栈信息合法,若不存在,则获取的调用堆栈信息不合法。
3.如权利要求1所述的一种iOS平台文件读取保护方法,其特征在于:定义根据Mach‑o文件的虚拟内存地址和指针获取的open函数的内存地址为原始内存地址;
当判定open函数的调用堆栈信息合法时,则open函数跳回至原始内存地址。
4.一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至3任一项所述的方法。
5.一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1至3任一项所述的方法。
6.一种iOS平台文件读取保护系统,其特征在于,包括:获取模块,其用于获取iOS系统中的所有Mach‑o文件及每个Mach‑o文件所对应的内存起始地址,并根据内存起始地址获取Mach‑o文件在内存中的虚拟内存地址;
执行模块,其用于根据Mach‑o文件在内存中的虚拟内存地址,同时解析Mach‑o文件,得到每个Mach‑o文件内每个函数的名称和指针,遍历每个函数的名称,找到每个Mach‑o文件内的open函数,同时编写一hook函数,所述hook函数用于获取open函数的调用堆栈信息,其中,所述hook函数用于将目标函数的内存地址进行替换成设定地址;当目标函数执行时,跳转至设定地址以进行调用堆栈信息的获取;所述目标函数为open函数;
判断模块,其用于当使用open函数进行文件内容读取操作时,则使用hook函数获取当前open函数的调用堆栈信息,并将获取的调用堆栈信息上传至后台服务器以对获取的调用堆栈信息的合法性进行判断,若合法,则不做处理,若不合法,则禁止当前open函数的文件读取操作;
其中,对于当前open函数的调用堆栈信息的获取,具体为:根据Mach‑o文件的虚拟内存地址和指针,获取Mach‑o文件中open函数的内存地址;
将open函数的内存地址替换成设定地址;
open函数跳转至设定地址,进行open函数的调用堆栈信息的获取。
7.如权利要求6所述的一种iOS平台文件读取保护系统,其特征在于:所述后台服务器包括一数据库;所述数据库中存储有所有open函数的所有合法调用堆栈信息;判断获取的调用堆栈信息是否存在于数据库中,若存在,则获取的调用堆栈信息合法,若不存在,则获取的调用堆栈信息不合法。