1.一种IOS应用中绕过函数调用链检测的方法,其特征在于,包括:S1,对目的IOS应用程序以及系统函数backtrace进行Hook操作;
S2,通过系统函数backtrace记录目的IOS应用程序中核心函数的调用过程,以此分析得到一条合法的核心函数调用链;
S3,当源IOS应用程序调用目的IOS应用程序的核心函数时,判断当前函数调用链是否为合法的核心函数调用链;
S4,若合法,则不作处理,若不合法,则将当前函数调用链修改为所述合法的核心函数调用链,以绕过核心函数调用堆栈的检测。
2.如权利要求1所述的IOS应用中绕过函数调用链检测的方法,其特征在于,所述步骤S1中对目的IOS应用程序进行Hook操作进一步包括:对目的IOS应用程序中的每一个Mach-o文件进行Hook操作,以实现对整个目的IOS应用程序的Hook操作。
3.如权利要求2所述的IOS应用中绕过函数调用链检测的方法,其特征在于,所述对每一个Mach-o文件进行Hook操作进一步包括:针对目的IOS应用程序中的每一个Mach-o文件,找到每一个Mach-o文件的函数地址;
为每一个Mach-o文件编写对应的自定义函数,采用内存分配给所述自定义函数的函数地址替换该Mach-o文件的函数地址,实现每一个Mach-o文件的Hook操作。
4.如权利要求1所述的IOS应用中绕过函数调用链检测的方法,其特征在于,所述步骤S1中对系统函数backtrace进行Hook操作进一步包括:在源IOS应用程序中编写dylib模块,且在所述dylib模块中编写Hook函数my_backtrace,采用my_backtrace函数对原有的系统函数backtrace函数进行Hook操作,实现当源IOS应用程序调用backtrace函数时跳转到my_backtrace函数。
5.如权利要求4所述的IOS应用中绕过函数调用链检测的方法,其特征在于,所述S3中判断当前函数调用链是否为合法的核心函数调用链进一步包括:当源IOS应用程序调用目的IOS应用程序中的核心函数时,源IOS应用程序调用系统函数backtrace函数获取真实的当前函数调用链;
在Hook函数my_backtrace中判断当前函数调用链是否是dylib模块中编写的函数调用链。
6.如权利要求5所述的IOS应用中绕过函数调用链检测的方法,其特征在于,所述在Hook函数my_backtrace中判断当前函数调用链是否是dylib模块中编写的函数调用链进一步包括:调用backtrace函数获取当前函数调用堆栈的所有内存地址以及调用地址的个数;
调用backtrace_symbols获取每个内存地址的函数名称;
根据每一个函数名称,在Hook函数my_backtrace中判断当前函数调用链是否为dylib模块中编写的函数调用链。
7.如权利要求6所述的IOS应用中绕过函数调用链检测的方法,其特征在于,所述步骤S3中将当前函数调用链修改为所述合法的核心函数调用链进一步包括:若判断出当前函数调用链为dylib模块中编写的函数调用链,则在my_backtrace函数中利用合法的核心函数调用链的内存地址对当前函数调用链的内存地址进行修改,实现对当前函数调用链进行伪造。
8.一种IOS应用中绕过函数调用链检测的系统,其特征在于,包括:操作模块,用于对目的IOS应用程序以及系统函数backtrace进行Hook操作;
分析模块,用于通过系统函数backtrace记录目的IOS应用程序中核心函数的调用过程,以此分析得到一条合法的核心函数调用链;
判断模块,用于当源IOS应用程序的调用目的IOS应用程序的核心函数时,判断当前函数调用链是否为合法的核心函数调用链;
修改模块,用于若合法,则不作处理,若不合法,则将当前函数调用链修改为所述合法的核心函数调用链,以绕过核心函数调用堆栈的检测,其中,函数调用链存储于调用堆栈中。
9.一种优化命名管道的通信方法的设备,其特征在于,包括处理器、存储器和总线;
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-7任一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。