软件测试之SDK开发(ios)——fishHook原理介绍

我们在做测试的时候,通常需要对app里面的某些方法进行hook。今天介绍一下fishHook的原理,从而说明fishHook的使用场景和局限性。
fishhook中已经将原理介绍的很清楚,如下图所示:

通过以上fishhook原理介绍可以得出如下结论:
适用场景:

  • 可以hook通过懒加载表Lazy Symbol Pointers加载的符 ,这些符 通常是系统库的C语言符 ,只能hook 到可执行文件调用动态库或framework,无法hook到动态库和动态库之间的函数调用。所以想hook某些系统函数,可以在MachOview里面的懒加载表Lazy Symbol Pointers里面是否存在符

局限性

  • 不可以hook自己编写的C函数,因为自己编写的C函数在编译时期已经确定了符 ,不会通过懒加载。
  • 不可以hook 静态库里面的符 ,因为静态库里面的符 也不是通过懒加载,在编译时期也已经确定了符 。
  • 不可以hook 动态库和动态库之间的函数调用,因为也是加载时就确定了所有符 的地址,参考文章软件测试之SDK开发(ios)——fishhook不能hook动态库和framework之间的相互调用

参考文章:

1、https://www.jianshu.com/p/883297573063

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月5日
下一篇 2019年10月5日

相关推荐