このアプリケーションの一部のコンテンツは現時点では利用できません。
このような状況が続く場合は、にお問い合わせくださいフィードバック & お問い合わせ
1. (WO2019047510) IOS PLATFORM DYLIB FILE HIDING METHOD, STORAGE MEDIUM, ELECTRONIC APPARATUS AND SYSTEM
Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099  

权利要求书

1   2   3   4   5   6   7   8   9   10  

附图

1   2  

说明书

发明名称 : IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统

技术领域

[0001]
本发明涉及信息处理领域,具体涉及一种IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统。

背景技术

[0002]
当前,随着移动设备的日益普及,移动应用产业尤其是IOS应用随之得到飞速发展,且IOS应用的开发模式和代码框架也随之发生了巨大变化。对于IOS平台,其应用程序的构成分为主程序和模块文件,模块文件即为dylib文件,dylib文件是IOS平台上的动态链接库文件。在IOS应用开发的过程中,若需要编写某些功能模块注入到对应的进程中运行,则均是编写一个dylib文件,然后将该dylib文件注入到对应的进程中运行。
[0003]
在IOS应用开发完成并进行运行后,通常会编写一个dylib文件注入到运行的IOS应用中,进行IOS应用的运行状态等相关数据的获取,以便于后期开发人员对IOS应用的调试和维护,由于IOS系统资源机制的原因,IOS应用的进程经常会关闭一些dylib文件的运行,以节省系统资源,保证系统资源的合理利用,故注入到IOS应用中用于获取IOS应用运行状态的dylib文件会被误禁止,进行影响开发人员对IOS应用后期调试工作的正常进行。
[0004]
发明内容
[0005]
针对现有技术中存在的缺陷,本发明的目的在于提供一种IOS平台隐藏dylib文件的方法,能够有效保证应用后期调试工作的正常 进行。
[0006]
为达到以上目的,本发明采取的技术方案是,包括:
[0007]
S1:获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数;
[0008]
S2:编写一hook函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称;
[0009]
S3:当IOS应用调用dylib文件名称获取函数进行IOS应用内所有dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据dylib文件名称判断是否含有待隐藏dylib文件,若是,转到S4,若否,转到S5;
[0010]
S4:隐藏待隐藏dylib文件名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用;
[0011]
S5:将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
[0012]
在上述技术方案的基础上,对于Mach-o文件内dylib文件名称获取函数的获取,具体为:
[0013]
S101:获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址;
[0014]
S102:根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针;
[0015]
S103:遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
[0016]
在上述技术方案的基础上,
[0017]
所述hook函数用于将目标函数的内存地址进行替换成设定地址;
[0018]
当目标函数执行时,跳转至设定地址以进行dylib文件名称获取函数获取的dylib文件名称的获取;
[0019]
所述目标函数为dylib文件名称获取函数。
[0020]
在上述技术方案的基础上,
[0021]
所述IOS应用还用于调用Mach-o文件内的dylib文件个数获取函数获取IOS应用内的dylib文件个数;
[0022]
当dylib文件名称获取函数获取的dylib文件名称中含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数为获取的dylib文件总个数减去待隐藏dylib文件的个数;
[0023]
当dylib文件名称获取函数获取的dylib文件名称中不含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数即为获取的dylib文件总个数。
[0024]
在上述技术方案的基础上,通过hook方式对返回给IOS应用的dylib文件的个数进行修改。
[0025]
本发明还提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的方法。
[0026]
本发明还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的方法。
[0027]
本发明还提供一种IOS平台隐藏dylib文件的系统,包括:
[0028]
获取模块,其用于获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数;
[0029]
编写模块,其用于编写一hook函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称;
[0030]
判断与执行模块,其用于当IOS应用调用dylib文件名称获取函 数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据名称判断是否含有待隐藏dylib文件,若是,则隐藏待隐藏dylib文件的名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用,若否,则将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
[0031]
在上述技术方案的基础上,所述获取模块对于Mach-o文件内dylib文件名称获取函数的获取,具体为:
[0032]
获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址;
[0033]
根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针;
[0034]
遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
[0035]
在上述技术方案的基础上,所述hook函数用于将目标函数的内存地址进行替换成设定地址;当目标函数执行时,跳转至设定地址以进行dylib文件名称获取函数获取的dylib文件名称的获取;所述目标函数为dylib文件名称获取函数。
[0036]
与现有技术相比,本发明的优点在于:通过hook的方式,当IOS应用调用dylib文件名称获取函数进行dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,隐藏待隐藏的dylib文件,即相当于隐藏了应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件的禁止运行操作,保证开发人员能够正常获取到IOS应用运行状态的数据,保证 IOS应用调试工作的正常进行。

附图说明

[0037]
图1为本发明实施例中IOS平台隐藏dylib文件的方法的流程图;
[0038]
图2为本发明实施例一种电子设备的结构示意图。

具体实施方式

[0039]
以下结合附图及实施例对本发明作进一步详细说明。
[0040]
参见图1所示,本发明实施例提供一种IOS平台隐藏dylib文件的方法,用于当IOS应用对应用内的dylib文件获取时,隐藏应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件获取而禁止运行,保证开发人员对IOS应用调试工作的正常进行。
[0041]
本发明实施例中,dylib文件名称获取函数为IOS的系统函数_dyld_get_image_name,通过该函数可以获取IOS应用中加载的每个dylib文件的名称,该函数的原型为:
[0042]
const char*_dyld_get_image_name(uint32_t image_index);
[0043]
该函数中,参数uint32_t image_index用来标示获取的dylib文件的索引,该函数的返回值const char*用来标示获取到的dylib文件的名称。
[0044]
本发明实施例的IOS平台隐藏dylib文件的方法具体包括:
[0045]
S1:获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数。对于Mach-o文件内dylib文件名称获取函数的获取,具体为:
[0046]
S101:获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内 存中的虚拟内存地址;
[0047]
dylib文件名称获取函数位于Mach-o文件中,Mach-o是IOS系统中可执行文件的格式,对于Mach-o文件的结构,具体包括header structure(头部)、load command(加载命令)和segment(段),一个Mach-o文件可以拥有多个段,每个段可以拥有零个或多个区域(section),每一个段都拥有一段虚拟地址映射到进程的地址空间,同时,一个完整的Mach-o文件的末端是链接信息,其中包含了动态加载器用来链接可执行文件或者依赖库所需使用的符号表、字符串等等。dylib文件名称获取函数位于Mach-o文件,且一个IOS应用在运行时会加载多个Mach-o文件,且每一个Mach-o文件都有可能调用到dylib文件名称获取函数进行应用内dylib文件名称的获取操作,因此为保证判断的准确性,我们需要获取IOS系统中所有的Mach-o文件,以便于进行后续的操作。
[0048]
对于系统中Mach-o文件的获取,首先可以通过系统函数获取到系统中Mach-o文件的个数以及Mach-o文件的内存起始地址,具体实现为:
[0049]
执行uint32_t c=_dyld_image_count();即通过_dyld_image_count来获取IOS系统中所加载的Mach-o文件的个数,然后
[0050]
执行for(uint32_t i=0;i<c;i++),即通过for循环来遍历Mach-o文件,接着
[0051]
执行onst struct mach_header*header=_dyld_get_image_header(i),即通过函数_dyld_get_image_header来获取Mach-o文件的内存起始地址,接着
[0052]
执行intptr_t slide=_dyld_get_image_vmaddr_slide(i);即通过函数_dyld_get_image_vmaddr_slide来获取Mach-o文件在内存中的虚拟内 存地址。
[0053]
S102:根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针;
[0054]
S103:遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
[0055]
即为了找出Mach-o文件中的目标函数,目标函数即为dylib文件名称获取函数。具体的:
[0056]
对Mach-o文件进行解析,在load command(加载命令)内找到linkedit_segment、symtab_cmd、dysymtab_cmd,通过linkedit_segment则可以找到symtab_cmd中的symtab和strtab,其中,strtab内存储着Mach-o文件内每个函数的名称,strtab内存储着Mach-o文件内每个函数的索引,而Mach-o文件内每个函数的函数指针存储在section中,因此需要进一步地从Mach-o文件中解析出section,其过程为:在Mach-o文件中获取到对应的cmd,因为Mach-o文件的解析是开源的,故可以按照开源的代码来解析需要查找的inkedit_segment、symtab_cmd、dysymtab_cmd等cmd地址,故遍历Mach-o文件的Load command来查找,最终可以查找到section、symtab、strtab、indirect_symtab。得到每个Mach-o文件内每个函数的名称和指针后,便可遍历每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
[0057]
S2:编写一hook(钩子)函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称;即hook函数用于将目标函数的内存地址进行替换成设定地址;当目标函数执行时,跳转至设定地址以进行dylib文件名称获取函数获取的dylib文件名称的获取;目标函数为dylib文件名称获取函数。其中,设定地址即为人为编写 的函数地址,用于当dylib文件名称获取函数执行时跳转,从而先进行预先编写的功能函数的执行,进而获取到获取dylib文件名称获取函数获取的dylib文件的名称。
[0058]
本发明实施例中,hook函数的原型如下:
[0059]
HOOK_Function(char*pFuncName,void*pNew,void**pSaveOrg);
[0060]
该函数中,HOOK_Function为hook函数的名称;
[0061]
参数char*pFuncName标示需要hook的函数名称,这里需要hook的函数名称为dylib文件名称获取函数;
[0062]
参数void*pNew标示替换的函数的内存地址;
[0063]
参数void**pSaveOrg标示存储系统原本的函数的内存地址。
[0064]
S3:当IOS应用调用dylib文件名称获取函数进行IOS应用内所有dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据dylib文件名称判断是否含有待隐藏dylib文件,若是,转到S4,若否,转到S5。本发明实施例中待隐藏dylib文件即为用于获取IOS应用运行状态的dylib文件。通过hook函数获取dylib文件名称获取函数获取的dylib文件名称的具体过程为:1、定义一个函数指针:static const char*(*orig_dyld_get_image_name)(uint32_t image_index);使其用来存储dylib文件名称获取函数_dyld_get_image_name的内存地址:
[0065]
2、编写一功能函数my_dyld_get_image_name,当_dyld_get_image_name执行时,通过hook函数将目标函数的内存地址进行替换成设定地址,进而执行编写的功能函数my_dyld_get_image_name,进而获取dylib文件名称获取函数获取的dylib文件名称。具体的:
[0066]
调用hook函数对_dyld_get_image_name进行hook,
[0067]
具体实现代码为:HOOK_Function("_dyld_get_image_name",my_dyld_get_image_name,(void*)&orig_dyld_get_image_name)
[0068]
此时,上述的char*pFuncName即标示需要hook的函数为_dyld_get_image_name,void*pNew标示替换的函数为my_dyld_get_image_name,oid**pSaveOrg标示将原本的函数_dyld_get_image_name地址存储到orig_dyld_get_image_name函数指针处。
[0069]
在my_dyld_get_image_name中依次判断当前获取的dylib文件名称是否是待隐藏的dylib文件的名称,相应代码为:
[0070]
const char*my_dyld_get_image_name(uint32_t image_index)
[0071]
{
[0072]
const char*dyName=orig_dyld_get_image_name(image_index);
[0073]
if(strstr(dyName,"需要隐藏的dylib文件名称"))
[0074]
{
[0075]
dyName=orig_dyld_get_image_name(image_index+1);
[0076]
}
[0077]
return dyName;
[0078]
}
[0079]
如果是需要隐藏的,则调用系统的orig_dyld_get_image_name函数得到下一个dylib文件名称,并进行判断,通过此方法来对dylib文件名称获取函数获取的所有dylib文件名称进行判断。
[0080]
S4:隐藏待隐藏dylib文件名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用,即返回给IOS应用的所有dylib文件名称中是不含有待隐藏dylib文件的名称;
[0081]
S5:将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
[0082]
通过编写的hook函数,获取dylib文件名称获取函数获取的dylib文件的名称,并根据名称判断是否含有待隐藏dylib文件,如果含有,则隐藏,即待隐藏dylib文件的名称是不会返回给IOS应用的。
[0083]
在一种实施方式中,为进一步提高待隐藏dylib文件隐藏的准确性,避免被IOS应用所获取,IOS应用还用于调用Mach-o文件内的dylib文件个数获取函数获取IOS应用内的dylib文件个数;当dylib文件名称获取函数获取的dylib文件名称中含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数为获取的dylib文件总个数减去待隐藏dylib文件的个数;当dylib文件名称获取函数获取的dylib文件名称中不含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数即为获取的dylib文件总个数。具体通过hook方式对返回给IOS应用的dylib文件的个数进行修改。
[0084]
dylib文件个数获取函数为_dyld_image_count,该函数为IOS的系统函数,通过该函数可以获取IOS应用中加载的dylib文件的个数,该函数的原型为:
[0085]
uint32_t_dyld_image_count(void);该函数不需要参数,调用时直接返回IOS应用中的dylib文件个数,dylib文件个数获取函数也位于Mach-o文件中,其获取方式与dylib文件名称获取函数相同。
[0086]
对于dylib文件个数获取函数获取的Mach-o文件个数的修改过程,具体为:
[0087]
定义一个函数指针:static uint32_t(*orig_dyld_image_count)();用来存储_dyld_image_count函数的地址;同样的编写一功能函数my_dyld_image_count(),当_dyld_image_count执行时,通过hook方式将目标函数的内存地址进行替换成设定地址,进而执行编写的功能函数my_dyld_image_count(),进而获取dylib文件个数获取函数获取 的dylib文件个数,当dylib文件名称获取函数获取的dylib文件名称中含有待隐藏dylib文件名称,则在my_dyld_image_count()中修改dylib文件的个数,该过程相应的代码为:
[0088]
[0089]
若待隐藏dylib文件的个数为1,则返回给IOS应用的dylib文件个数即为获取的dylib文件总个数减1。
[0090]
对于hook的方式,与dylib文件名称获取函数被hook的方式类似,此时相应hook函数为
[0091]
HOOK_Function("_dyld_image_count",my_dyld_image_count,(void*)&orig_dyld_image_count);
[0092]
此处该hook函数中,char*pFuncName即标示需要hook的函数为_dyld_image_count,void*pNew标示替换的函数为my_dyld_image_count,oid**pSaveOrg标示将原本的函数_dyld_image_count地址存储到orig_dyld_image_count函数指针处。
[0093]
本发明的IOS平台隐藏dylib文件的方法的原理在于:针对IOS应用中当进行应用内dylib文件名称获取时必须调用dylib文件名称获取函数的特性,通过hook的方式,当IOS应用调用dylib文件名称获取函数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,并根据名称判断是否含有待隐藏的dylib文件,若含有,则隐藏待隐藏dylib文件的名称,使最终返回给应用的dylib文件的名称中不含有待隐藏dylib文件 的名称,即相当于隐藏了应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件的禁止运行操作,保证开发人员能够正常获取到IOS应用运行状态的数据,保证IOS应用调试工作的正常进行。
[0094]
另外,对应上述IOS平台隐藏dylib文件的方法,本发明还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例所述的IOS平台隐藏dylib文件的方法的步骤。需要说明的是,所述存储介质包括U盘、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。
[0095]
参见图2所示,对应上述IOS平台隐藏dylib文件的方法,本发明还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各实施例的IOS平台隐藏dylib文件的方法。
[0096]
本发明实施例还提供一种基于上述IOS平台隐藏dylib文件的方法的IOS平台隐藏dylib文件的系统,包括获取模块、编写模块和判断与执行模块。
[0097]
获取模块用于获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数;编写模块用于编写一hook函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称;判断与执行模块用于当IOS应用调用dylib文件名称获取函数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据dylib文件名称判断是否含有待隐藏dylib文件,若是,则隐藏待隐藏dylib文件名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应 用,若否,则将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
[0098]
本发明实施例的IOS平台隐藏dylib文件的系统的原理在于:针对IOS应用中当进行应用内dylib文件名称获取时必须调用dylib文件名称获取函数的特性,通过编写模块,编写一hook函数,当IOS应用调用dylib文件名称获取函数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,通过判断与执行模块,根据名称判断是否含有待隐藏的dylib文件,若含有,则隐藏待隐藏dylib文件的名称,使最终返回给应用的dylib文件的名称中不含有待隐藏dylib文件的名称,即相当于隐藏了应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件的禁止运行操作,保证开发人员能够正常获取到IOS应用运行状态的数据,保证IOS应用调试工作的正常进行。
[0099]
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

权利要求书

[权利要求 1]
一种IOS平台隐藏dylib文件的方法,其特征在于,包括: S1:获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数; S2:编写一hook函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称; S3:当IOS应用调用dylib文件名称获取函数进行IOS应用内所有dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据dylib文件名称判断是否含有待隐藏dylib文件,若是,转到S4,若否,转到S5; S4:隐藏待隐藏dylib文件名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用; S5:将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
[权利要求 2]
如权利要求1所述的一种IOS平台隐藏dylib文件的方法,其特征在于,对于Mach-o文件内dylib文件名称获取函数的获取,具体为: S101:获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址; S102:根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针; S103:遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
[权利要求 3]
如权利要求1所述的一种IOS平台隐藏dylib文件的方法, 其特征在于: 所述hook函数用于将目标函数的内存地址进行替换成设定地址; 当目标函数执行时,跳转至设定地址以进行dylib文件名称获取函数获取的dylib文件名称的获取; 所述目标函数为dylib文件名称获取函数。
[权利要求 4]
如权利要求1所述的一种IOS平台隐藏dylib文件的方法,其特征在于: 所述IOS应用还用于调用Mach-o文件内的dylib文件个数获取函数获取IOS应用内的dylib文件个数; 当dylib文件名称获取函数获取的dylib文件名称中含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数为获取的dylib文件总个数减去待隐藏dylib文件的个数; 当dylib文件名称获取函数获取的dylib文件名称中不含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数即为获取的dylib文件总个数。
[权利要求 5]
如权利要求4所述的一种IOS平台隐藏dylib文件的方法,其特征在于:通过hook方式对返回给IOS应用的dylib文件的个数进行修改。
[权利要求 6]
一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至5任一项所述的方法。
[权利要求 7]
一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1至5任一项所述的方法。
[权利要求 8]
一种IOS平台隐藏dylib文件的系统,其特征在于,包括: 获取模块,其用于获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数; 编写模块,其用于编写一hook函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称; 判断与执行模块,其用于当IOS应用调用dylib文件名称获取函数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据dylib文件名称判断是否含有待隐藏dylib文件,若是,则隐藏待隐藏dylib文件名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用,若否,则将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
[权利要求 9]
如权利要求8所述的一种IOS平台隐藏dylib文件的系统,其特征在于:所述获取模块对于Mach-o文件内dylib文件名称获取函数的获取,具体为: 获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址; 根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针; 遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
[权利要求 10]
如权利要求9所述的一种IOS平台隐藏dylib文件的系统,其特征在于:所述hook函数用于将目标函数的内存地址进行替换成设定地址;当目标函数执行时,跳转至设定地址以进行dylib文件名称获 取函数获取的dylib文件名称的获取;所述目标函数为dylib文件名称获取函数。

附图

[ 图 1]  
[ 图 2]