![9770326f8d5a385b99aa836827af2551.gif](https://i-blog.csdnimg.cn/blog_migrate/5c9ee24b469b52d0e4e9e89088c8f114.gif)
前言
iOS的动态插桩(iOS hook)技术在iOS越狱界已经是耳熟能详的话题,但是有一个问题——越狱后的手机不稳定,不稳定对于自动化测试来说就是致命的伤害,所以本文主要分析iOS在非越狱手机上的动态插桩技术及其自动化方面的应用。
一、QT4i通用测试桩的介绍
QT4i是我们的QTA自动化测试提供的ios框架(https://github.com/tencent/QT4i 感兴趣的话可以在公众号的菜单栏“项目体验”点开了解哦),下面我们先以QT4i的例子了解下动态插桩的实现原理。QT4i框架提供了基于动态插桩原理实现的一个通用测试桩——QT4iSTub,对于需要访问被测App的进程内接口的测试场景,提供了一种新的测试思路,同时也提升和丰富了App可测性。下图是QT4iSTub的实现原理,通过Python层的API接口可以直接调用APP内部实现的ObjectIve-c方法。
![756b7911baaf736d09a692395c353c08.png](https://i-blog.csdnimg.cn/blog_migrate/fc420f657e33e60e920bd188739355c6.jpeg)
二、iOS的动态插桩原理分析
动态插桩是在没有目标a