CN107544811A - IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统 - Google Patents

IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统 Download PDF

Info

Publication number
CN107544811A
CN107544811A CN201710805670.4A CN201710805670A CN107544811A CN 107544811 A CN107544811 A CN 107544811A CN 201710805670 A CN201710805670 A CN 201710805670A CN 107544811 A CN107544811 A CN 107544811A
Authority
CN
China
Prior art keywords
dylib
files
file names
function
mach
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710805670.4A
Other languages
English (en)
Other versions
CN107544811B (zh
Inventor
周志刚
陈少杰
张文明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710805670.4A priority Critical patent/CN107544811B/zh
Publication of CN107544811A publication Critical patent/CN107544811A/zh
Priority to PCT/CN2018/081303 priority patent/WO2019047510A1/zh
Application granted granted Critical
Publication of CN107544811B publication Critical patent/CN107544811B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及信息处理领域,公开了一种IOS平台隐藏dylib文件的方法,该方法包括S1:获取IOS应用内的所有Mach‑o文件及每个Mach‑o文件内的dylib文件名称获取函数;S2:编写一hook函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称;S3:当IOS应用调用dylib文件名称获取函数进行IOS应用内所有dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据名称判断是否含有待隐藏dylib文件,若是,转到S4,若否,转到S5;S4:隐藏待隐藏dylib文件的名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用;S5:将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。本发明能够有效保证应用后期调试工作的正常进行。

Description

IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统
技术领域
本发明涉及信息处理领域,具体涉及一种IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统。
背景技术
当前,随着移动设备的日益普及,移动应用产业尤其是IOS应用随之得到飞速发展,且IOS应用的开发模式和代码框架也随之发生了巨大变化。对于IOS平台,其应用程序的构成分为主程序和模块文件,模块文件即为dylib文件,dylib文件是IOS平台上的动态链接库文件。在IOS应用开发的过程中,若需要编写某些功能模块注入到对应的进程中运行,则均是编写一个dylib文件,然后将该dylib文件注入到对应的进程中运行。
在IOS应用开发完成并进行运行后,通常会编写一个dylib文件注入到运行的IOS应用中,进行IOS应用的运行状态等相关数据的获取,以便于后期开发人员对IOS应用的调试和维护,由于IOS系统资源机制的原因,IOS应用的进程经常会关闭一些dylib文件的运行,以节省系统资源,保证系统资源的合理利用,故注入到IOS应用中用于获取IOS应用运行状态的dylib文件会被误禁止,进行影响开发人员对IOS应用后期调试工作的正常进行。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种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应用。
在上述技术方案的基础上,对于Mach-o文件内dylib文件名称获取函数的获取,具体为:
S101:获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址;
S102:根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针;
S103:遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
在上述技术方案的基础上,
所述hook函数用于将目标函数的内存地址进行替换成设定地址;
当目标函数执行时,跳转至设定地址以进行dylib文件名称获取函数获取的dylib文件名称的获取;
所述目标函数为dylib文件名称获取函数。
在上述技术方案的基础上,
所述IOS应用还用于调用Mach-o文件内的dylib文件个数获取函数获取IOS应用内的dylib文件个数;
当dylib文件名称获取函数获取的dylib文件名称中含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数为获取的dylib文件总个数减去待隐藏dylib文件的个数;
当dylib文件名称获取函数获取的dylib文件名称中不含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数即为获取的dylib文件总个数。
在上述技术方案的基础上,通过hook方式对返回给IOS应用的dylib文件的个数进行修改。
本发明还提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的方法。
本发明还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的方法。
本发明还提供一种IOS平台隐藏dylib文件的系统,包括:
获取模块,其用于获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数;
编写模块,其用于编写一hook函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称;
判断与执行模块,其用于当IOS应用调用dylib文件名称获取函数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,根据名称判断是否含有待隐藏dylib文件,若是,则隐藏待隐藏dylib文件的名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用,若否,则将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
在上述技术方案的基础上,所述获取模块对于Mach-o文件内dylib文件名称获取函数的获取,具体为:
获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址;
根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针;
遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
在上述技术方案的基础上,所述hook函数用于将目标函数的内存地址进行替换成设定地址;当目标函数执行时,跳转至设定地址以进行dylib文件名称获取函数获取的dylib文件名称的获取;所述目标函数为dylib文件名称获取函数。
与现有技术相比,本发明的优点在于:通过hook的方式,当IOS应用调用dylib文件名称获取函数进行dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,隐藏待隐藏的dylib文件,即相当于隐藏了应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件的禁止运行操作,保证开发人员能够正常获取到IOS应用运行状态的数据,保证IOS应用调试工作的正常进行。
附图说明
图1为本发明实施例中IOS平台隐藏dylib文件的方法的流程图;
图2为本发明实施例一种电子设备的结构示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种IOS平台隐藏dylib文件的方法,用于当IOS应用对应用内的dylib文件获取时,隐藏应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件获取而禁止运行,保证开发人员对IOS应用调试工作的正常进行。
本发明实施例中,dylib文件名称获取函数为IOS的系统函数_dyld_get_image_name,通过该函数可以获取IOS应用中加载的每个dylib文件的名称,该函数的原型为:
const char*_dyld_get_image_name(uint32_t image_index);
该函数中,参数uint32_t image_index用来标示获取的dylib文件的索引,该函数的返回值const char*用来标示获取到的dylib文件的名称。
本发明实施例的IOS平台隐藏dylib文件的方法具体包括:
S1:获取IOS应用内的所有Mach-o文件及每个Mach-o文件内的dylib文件名称获取函数。对于Mach-o文件内dylib文件名称获取函数的获取,具体为:
S101:获取IOS应用内的所有Mach-o文件及每个Mach-o文件所对应的内存起始地址,并根据内存起始地址获取Mach-o文件在内存中的虚拟内存地址;
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文件,以便于进行后续的操作。
对于系统中Mach-o文件的获取,首先可以通过系统函数获取到系统中Mach-o文件的个数以及Mach-o文件的内存起始地址,具体实现为:
执行uint32_t c=_dyld_image_count();即通过_dyld_image_count来获取IOS系统中所加载的Mach-o文件的个数,然后
执行for(uint32_ti=0;i<c;i++),即通过for循环来遍历Mach-o文件,接着
执行onst struct mach_header*header=_dyld_get_image_header(i),即通过函数_dyld_get_image_header来获取Mach-o文件的内存起始地址,接着
执行intptr_t slide=_dyld_get_image_vmaddr_slide(i);即通过函数_dyld_get_image_vmaddr_slide来获取Mach-o文件在内存中的虚拟内存地址。
S102:根据Mach-o文件在内存中的虚拟内存地址,解析Mach-o文件,得到每个Mach-o文件内每个函数的名称和指针;
S103:遍历得到的每个Mach-o文件内每个函数的名称,找到每个Mach-o文件内的dylib文件名称获取函数。
即为了找出Mach-o文件中的目标函数,目标函数即为dylib文件名称获取函数。具体的:
对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文件名称获取函数。
S2:编写一hook(钩子)函数,所述hook函数用于获取dylib文件名称获取函数获取的dylib文件的名称;即hook函数用于将目标函数的内存地址进行替换成设定地址;当目标函数执行时,跳转至设定地址以进行dylib文件名称获取函数获取的dylib文件名称的获取;目标函数为dylib文件名称获取函数。其中,设定地址即为人为编写的函数地址,用于当dylib文件名称获取函数执行时跳转,从而先进行预先编写的功能函数的执行,进而获取到获取dylib文件名称获取函数获取的dylib文件的名称。
本发明实施例中,hook函数的原型如下:
HOOK_Function(char*pFuncName,void*pNew,void**pSaveOrg);
该函数中,HOOK_Function为hook函数的名称;
参数char*pFuncName标示需要hook的函数名称,这里需要hook的函数名称为dylib文件名称获取函数;
参数void*pNew标示替换的函数的内存地址;
参数void**pSaveOrg标示存储系统原本的函数的内存地址。
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的内存地址:
2、编写一功能函数my_dyld_get_image_name,当_dyld_get_image_name执行时,通过hook函数将目标函数的内存地址进行替换成设定地址,进而执行编写的功能函数my_dyld_get_image_name,进而获取dylib文件名称获取函数获取的dylib文件名称。具体的:
调用hook函数对_dyld_get_image_name进行hook,
具体实现代码为:HOOK_Function("_dyld_get_image_name",my_dyld_get_image_name,(void*)&orig_dyld_get_image_name)
此时,上述的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函数指针处。
在my_dyld_get_image_name中依次判断当前获取的dylib文件名称是否是待隐藏的dylib文件的名称,相应代码为:
如果是需要隐藏的,则调用系统的orig_dyld_get_image_name函数得到下一个dylib文件名称,并进行判断,通过此方法来对dylib文件名称获取函数获取的所有dylib文件名称进行判断。
S4:隐藏待隐藏dylib文件名称,并将隐藏了待隐藏dylib文件名称后的dylib文件名称数据返回给IOS应用,即返回给IOS应用的所有dylib文件名称中是不含有待隐藏dylib文件的名称;
S5:将dylib文件名称获取函数取的dylib文件名称返回给IOS应用。
通过编写的hook函数,获取dylib文件名称获取函数获取的dylib文件的名称,并根据名称判断是否含有待隐藏dylib文件,如果含有,则隐藏,即待隐藏dylib文件的名称是不会返回给IOS应用的。
在一种实施方式中,为进一步提高待隐藏dylib文件隐藏的准确性,避免被IOS应用所获取,IOS应用还用于调用Mach-o文件内的dylib文件个数获取函数获取IOS应用内的dylib文件个数;当dylib文件名称获取函数获取的dylib文件名称中含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数为获取的dylib文件总个数减去待隐藏dylib文件的个数;当dylib文件名称获取函数获取的dylib文件名称中不含有待隐藏dylib文件名称,则返回给IOS应用的dylib文件个数即为获取的dylib文件总个数。具体通过hook方式对返回给IOS应用的dylib文件的个数进行修改。
dylib文件个数获取函数为_dyld_image_count,该函数为IOS的系统函数,通过该函数可以获取IOS应用中加载的dylib文件的个数,该函数的原型为:
uint32_t_dyld_image_count(void);该函数不需要参数,调用时直接返回IOS应用中的dylib文件个数,dylib文件个数获取函数也位于Mach-o文件中,其获取方式与dylib文件名称获取函数相同。
对于dylib文件个数获取函数获取的Mach-o文件个数的修改过程,具体为:
定义一个函数指针: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文件的个数,该过程相应的代码为:
若待隐藏dylib文件的个数为1,则返回给IOS应用的dylib文件个数即为获取的dylib文件总个数减1。
对于hook的方式,与dylib文件名称获取函数被hook的方式类似,此时相应hook函数为
HOOK_Function("_dyld_image_count",my_dyld_image_count,(void*)&orig_dyld_image_count);
此处该hook函数中,char*pFuncName即标示需要hook的函数为_dyld_image_count,void*pNew标示替换的函数为my_dyld_image_count,oid**pSaveOrg标示将原本的函数_dyld_image_count地址存储到orig_dyld_image_count函数指针处。
本发明的IOS平台隐藏dylib文件的方法的原理在于:针对IOS应用中当进行应用内dylib文件名称获取时必须调用dylib文件名称获取函数的特性,通过hook的方式,当IOS应用调用dylib文件名称获取函数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,并根据名称判断是否含有待隐藏的dylib文件,若含有,则隐藏待隐藏dylib文件的名称,使最终返回给应用的dylib文件的名称中不含有待隐藏dylib文件的名称,即相当于隐藏了应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件的禁止运行操作,保证开发人员能够正常获取到IOS应用运行状态的数据,保证IOS应用调试工作的正常进行。
另外,对应上述IOS平台隐藏dylib文件的方法,本发明还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例所述的IOS平台隐藏dylib文件的方法的步骤。需要说明的是,所述存储介质包括U盘、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。
参见图2所示,对应上述IOS平台隐藏dylib文件的方法,本发明还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各实施例的IOS平台隐藏dylib文件的方法。
本发明实施例还提供一种基于上述IOS平台隐藏dylib文件的方法的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应用。
本发明实施例的IOS平台隐藏dylib文件的系统的原理在于:针对IOS应用中当进行应用内dylib文件名称获取时必须调用dylib文件名称获取函数的特性,通过编写模块,编写一hook函数,当IOS应用调用dylib文件名称获取函数进行IOS应用内dylib文件名称的获取时,通过hook函数获取dylib文件名称获取函数获取的dylib文件名称,通过判断与执行模块,根据名称判断是否含有待隐藏的dylib文件,若含有,则隐藏待隐藏dylib文件的名称,使最终返回给应用的dylib文件的名称中不含有待隐藏dylib文件的名称,即相当于隐藏了应用内的用于获取IOS应用运行状态的dylib文件,避免IOS应用对该类dylib文件的禁止运行操作,保证开发人员能够正常获取到IOS应用运行状态的数据,保证IOS应用调试工作的正常进行。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (10)

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文件名称获取函数。
CN201710805670.4A 2017-09-08 2017-09-08 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统 Active CN107544811B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710805670.4A CN107544811B (zh) 2017-09-08 2017-09-08 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统
PCT/CN2018/081303 WO2019047510A1 (zh) 2017-09-08 2018-03-30 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710805670.4A CN107544811B (zh) 2017-09-08 2017-09-08 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统

Publications (2)

Publication Number Publication Date
CN107544811A true CN107544811A (zh) 2018-01-05
CN107544811B CN107544811B (zh) 2020-07-31

Family

ID=60958645

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710805670.4A Active CN107544811B (zh) 2017-09-08 2017-09-08 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统

Country Status (2)

Country Link
CN (1) CN107544811B (zh)
WO (1) WO2019047510A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019047510A1 (zh) * 2017-09-08 2019-03-14 武汉斗鱼网络科技有限公司 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统
CN109614254A (zh) * 2018-12-27 2019-04-12 迅雷计算机(深圳)有限公司 一种Dylib引用删除方法及相关装置
CN112148597A (zh) * 2020-09-16 2020-12-29 北京基调网络股份有限公司 一种消除iOS设备授权对话框的方法、测试方法及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127374B (zh) * 2021-05-19 2022-05-17 支付宝(杭州)信息技术有限公司 应用于iOS设备的应用程序测试方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102142069A (zh) * 2011-05-05 2011-08-03 北京思创银联科技股份有限公司 隐藏文件夹的方法
CN102194079A (zh) * 2011-03-18 2011-09-21 北京思创银联科技股份有限公司 文件访问过滤方法
US9275233B1 (en) * 2012-12-21 2016-03-01 Emc Corporation Generation and use of a modified protected file

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1684151A1 (en) * 2005-01-20 2006-07-26 Grant Rothwell William Computer protection against malware affection
CN101916349A (zh) * 2010-07-30 2010-12-15 中山大学 基于过滤驱动的文件访问控制方法、系统及过滤器管理器
CN107544811B (zh) * 2017-09-08 2020-07-31 武汉斗鱼网络科技有限公司 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102194079A (zh) * 2011-03-18 2011-09-21 北京思创银联科技股份有限公司 文件访问过滤方法
CN102142069A (zh) * 2011-05-05 2011-08-03 北京思创银联科技股份有限公司 隐藏文件夹的方法
US9275233B1 (en) * 2012-12-21 2016-03-01 Emc Corporation Generation and use of a modified protected file

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VTKY: "C_function_hooks_section3.xm", 《HTTPS://GITHUB.COM/VTKY/SWIZZLER/BLOB/MASTER/HOOKS/C/C_FUNCTION_HOOKS_SECTION3.XM》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019047510A1 (zh) * 2017-09-08 2019-03-14 武汉斗鱼网络科技有限公司 IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统
CN109614254A (zh) * 2018-12-27 2019-04-12 迅雷计算机(深圳)有限公司 一种Dylib引用删除方法及相关装置
CN112148597A (zh) * 2020-09-16 2020-12-29 北京基调网络股份有限公司 一种消除iOS设备授权对话框的方法、测试方法及存储介质

Also Published As

Publication number Publication date
WO2019047510A1 (zh) 2019-03-14
CN107544811B (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
Deitel Java how to program
US9940229B2 (en) Technologies for persistent memory programming
CN107544811A (zh) IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统
EP3365772B1 (en) Missing include suggestions for external files
CN109358841B (zh) 网页应用开发编译方法、装置及存储设备、计算机设备
CN104662514A (zh) 基于模型关联关系的遗产软件系统的现代化
US9201761B1 (en) Debugging data format conversion
US8572062B2 (en) Indexing documents using internal index sets
CN104391787A (zh) 一种针对目标方法的监控、热切入方法及装置
CN1716264A (zh) 利用控制程序信息注释并呈现系统踪迹的方法和系统
CN109426496B (zh) 程序日志写入文件的方法、存储介质、电子设备及系统
EP3217284A1 (en) Data structure abstraction for model checking
CN103226510B (zh) 解析vmcore文件的方法和装置
US20120246551A1 (en) Updating serialized objects
CN110457198A (zh) 调试信息输出方法、装置及存储介质
US20080010632A1 (en) Processing large sized relationship-specifying markup language documents
WO2018022303A1 (en) Capturing commands in a multi-engine graphics processing unit
CN109344083B (zh) 一种程序调试方法、装置、设备及可读存储介质
CN109426702A (zh) iOS平台文件读取保护方法、存储介质、电子设备及系统
US9135027B1 (en) Code generation and execution for dynamic programming languages
GB2506614A (en) Extracting core data for a summary dump file based upon most recent trace data entries
CN109857662A (zh) 用例数据处理方法、装置、计算机设备和存储介质
US8413114B1 (en) Method to simplify developing software having localization
CN103176891A (zh) 一种linux下利用内核模块与应用模块结合完成软件日志的方法
CN112631553A (zh) 一种雷达伺服系统模型建立方法、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant