System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种应用于iOS平台的Hook方法、系统及存储介质技术方案_技高网

一种应用于iOS平台的Hook方法、系统及存储介质技术方案

技术编号:42686599 阅读:5 留言:0更新日期:2024-09-10 12:34
本发明专利技术给出了一种应用于iOS平台的Hook方法、系统及存储介质,包括:在目标APP进程初始化前阻塞进程,并注入脱壳模块于进程内存中,所述脱壳模块用于去除所述目标APP进程的附加保护代码;将要替换功能函数的Hook函数编译为动态库;将所述动态库注入所述目标APP进程;将需要Hook的函数地址批量替换为所述动态库的函数地址,将替换功能函数的Hook函数编译为动态库注入目标APP进程,之后把需要Hook的函数地址一次性批量替换为动态库函数地址,可避开常见的反Hook手段,且不使用市面上常见Hook框架,能够更好的屏蔽Hook检测机制,并且函数替换时机可以自行把握,更加灵活自由。

【技术实现步骤摘要】

本专利技术涉及信息安全的,尤其是一种应用于ios平台的hook方法、系统及存储介质。


技术介绍

1、随着移动应用的快速发展,app的安全性也越来越受开发者或使用者的重视。app在使用过程中的一些显式或隐式的行为,是否会牵扯收集用户的隐私数据,这些行为该如何检测与甄别,是安全业界的重要研究方向之一;另外app在使用过程中会生产大量数据,这些数据有的在本地存储,有的需要在服务器存储,其中不乏各类敏感数据,这些数据具相应的商业价值甚至是取证价值,其数据安全性也是业界重点关注的方向。另外随着各类数据加密、协议加密、app行为混淆技术的发展,随之而来的是app内部的部分风险甚至恶意行为越来越隐蔽化,普通的分析检测方案甚至无法突破一款恶意软件的安全外壳,后续的分析甚至取证工作更是无从谈起。下面简要对几种常见的app分析技术进行介绍。

2、1.应用脱壳分析技术

3、加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作,诸如代码段的解密、还原,指令抽取等等。是应用加固技术中的常见手段,可以对原始二进制文进行加密/隐藏/混淆。加壳的程序可以有效阻止反汇编分析,以达到保护原本程序逻辑的目的。这种技术也常用来隐藏一些风险及恶意行为,或直接用作恶意程序的伪装,以绕过各类安全及杀毒软件的检测。

4、所以分析应用程序行为需要先进行脱壳操作。在ios平台上,以市面上常用的成熟app脱壳框架frida-ios-dump为例,其原理是首先以调试模式启动app进程,并在app完成初始化工作后(__attribute__((constructor))),该框架自动进行二进制dump操作,以完成脱壳。

5、目前针对该框架的对抗技术也较为成熟,如app初始化时不进行完整代码抽取,则dump下来的二进制程序依然为被保护的二进制,故并未真正完成脱壳;或者在初始化代码中添加反调试指令,以对抗调试启动模式的进程状态;诸如此类的对抗思路较多,并且可以嵌套使用,故单纯使用该框架并不能满足大多数复杂app的分析情况。

6、另外存在部分针对性强,或需要特殊定制的app脱壳脚本,其原理与上述框架大体相同,可以对自动化脱壳点进行手动配置,不过仍不能解决复杂app的多种对抗技术嵌套使用的模型。

7、2.应用hook及插桩分析技术

8、在完成第一步脱壳工作之后,接下来需要对app进行行为分析,以上过程均基于黑盒进行,故使用hook技术是最佳选择。在ios平台上,市面上常用的成熟hook框架有fishhook、hookzz等,其原理均为使用系统方法交换api,其接口为method_exchangeimplementations,或使用方法替换api,class_replacemethod完成hook工作,此原理利用了oc语言的runtime特性,属于基于语言层面的较为底层的hook方案。针对该方案的检测思路也有很多,如app内部可以首先hook以上系统api,待用户调用该api时进行鉴权,检测用户行为为未授权的第三方分析者时则予以拒绝,仅放行本app内部的调用行为,如此便可阻拦第三方分析器的hook操作。或者直接针对框架的特征进行检测,发现使用该框架的线程则进程会执行崩溃逻辑。

9、另外较底层的hook框架有substrate,dobby等框架,其原理是利用inlinehook技术完成hook操作,inlinehook为基于指令层面的运行时指令动态替换技术,其实现较为复杂,成熟的框架较少,且多具有一定的特征,如注入某固定的框架功能模块,或在内存中存在框架对应的识别码等等,较为容易通过以上特征进行检测,目前部分app支持通过上述特征检测发现进程内存在此类hook框架的痕迹。


技术实现思路

1、为了解决
技术介绍
中提到的技术问题,本专利技术提出了一种应用于ios平台的hook方法、系统及存储介质,以解决上述技术问题。

2、根据本专利技术的一个方面,提出了一种应用于ios平台的hook方法,包括:

3、s1、在目标app进程初始化前阻塞进程,并注入脱壳模块于进程内存中,所述脱壳模块用于去除所述目标app进程的附加保护代码;

4、s2、将要替换功能函数的hook函数编译为动态库;

5、s3、将所述动态库注入所述目标app进程;

6、s4、将需要hook的函数地址批量替换为所述动态库的函数地址。

7、将替换功能函数的hook函数编译为动态库注入目标app进程,之后把需要hook的函数地址一次性批量替换为动态库函数地址,可避开常见的反hook手段,且不使用市面上常见hook框架,能够更好的屏蔽hook检测机制,并且函数替换时机可以自行把握,更加灵活自由。

8、在一些具体的实施例中,步骤s1包括:

9、s11、以调试模式启动目标app进程;

10、s12、在所述目标app进程的初始化函数执行前阻塞进程;

11、s13、注入所述脱壳模块于进程内存中;

12、s14、启动交互线程以等待用户命令交互。用户可以发送内置的命令与模块交互,以类似调试的方式作用于待分析进程,寻找脱壳点,以应对复杂的app保护机制,如进程可以初始化工作时逐段解密其真正的业务代码,并将解密过程分布在n个函数中,函数执行采用异步方式,各段解密工作间互不干涉,用户需要逐渐跟进调试,并待机到各个解密线程完结后方可dump操作真实的二进制程序指令。

13、在一些具体的实施例中,步骤s1包括利用内存布局隐藏模块注入所述脱壳模块,所述内存布局隐藏模块用于将注入进去的模块在内存布局中隐藏。通过内存布局隐藏模块注入脱壳模块,可以避开检测机制。

14、在一些具体的实施例中,步骤s4的执行响应于确定接收所述用户执行hook函数的命令。函数替换时机可以为接收用户命令作为触发点,增强了灵活性。

15、在一些具体的实施例中,步骤s4包括:

16、s41、获取主模块基址和动态库中替换svc的函数地址;

17、s42、利用注入的所述动态库的模块名获取所述动态库基址;

18、s43、利用所述动态库基址和所述动态库中替换svc的函数地址计算所述动态库中hook函数的内存地址;

19、s44、基于所述主模块基址和预设svc的内存地址构成的目标svc内存地址,改写为所述动态库中hook函数的内存地址。

20、在一些具体的实施例中,步骤s4后包括运行所述目标app进程。hook结束后,执行app即可触发并得到结果。

21、在一些具体的实施例中,步骤s4后包括响应于确定接收所述用户卸载hook函数的命令,将所述需要hook的函数地址还原为原始函数的地址。通过命令交互的方式卸载hook哈数,恢复原始函数功能,也保证了方法的灵活性。

22、根据本专利技术的第二方面,提出了一种应用于ios平台的hook系统,该系本文档来自技高网...

【技术保护点】

1.一种应用于iOS平台的Hook方法,其特征在于,包括:

2.根据权利要求1所述的一种应用于iOS平台的Hook方法,其特征在于,步骤S1包括:

3.根据权利要求1所述的一种应用于iOS平台的Hook方法,其特征在于,步骤S1包括利用内存布局隐藏模块注入所述脱壳模块,所述内存布局隐藏模块用于将注入进去的模块在内存布局中隐藏。

4.根据权利要求2所述的一种应用于iOS平台的Hook方法,其特征在于,步骤S4的执行响应于确定接收所述用户执行Hook函数的命令。

5.根据权利要求1所述的一种应用于iOS平台的Hook方法,其特征在于,步骤S4包括:

6.根据权利要求1所述的一种应用于iOS平台的Hook方法,其特征在于,步骤S4后包括运行所述目标APP进程。

7.根据权利要求4所述的一种应用于iOS平台的Hook方法,其特征在于,步骤S4后包括响应于确定接收所述用户卸载Hook函数的命令,将所述需要Hook的函数地址还原为原始函数的地址。

8.一种应用于iOS平台的Hook系统,其特征在于,所述系统包括:

9.一种计算机可读存储介质,其上存储有一或多个计算机程序,其特征在于,该一或多个计算机程序被计算机处理器执行时实施权利要求1至7任一项所述的方法。

10.一种电子设备,包括:

...

【技术特征摘要】

1.一种应用于ios平台的hook方法,其特征在于,包括:

2.根据权利要求1所述的一种应用于ios平台的hook方法,其特征在于,步骤s1包括:

3.根据权利要求1所述的一种应用于ios平台的hook方法,其特征在于,步骤s1包括利用内存布局隐藏模块注入所述脱壳模块,所述内存布局隐藏模块用于将注入进去的模块在内存布局中隐藏。

4.根据权利要求2所述的一种应用于ios平台的hook方法,其特征在于,步骤s4的执行响应于确定接收所述用户执行hook函数的命令。

5.根据权利要求1所述的一种应用于ios平台的hook方法,其特征在于,步骤s4包括:<...

【专利技术属性】
技术研发人员:孙林泽张磊姚志强岳阳任晓旭
申请(专利权)人:厦门市美亚柏科信息安全研究所有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1