美文网首页
代码注入&MethodSwizzle

代码注入&MethodSwizzle

作者: Code_人生 | 来源:发表于2019-10-16 16:12 被阅读0次

一、代码注入

一般修改原始的程序,是利用代码注入的方式,注入代码就会选择利用FrameWork或者Dylib等三方库的方式注入。

  • Framwork注入
    • 通过Xcode新建Framwork,将库安装进入APP包
    • 通过yololib注入Framwork库路径。命令:$yololib(空格)MachO文件路径(空格)库路径
    • 所有的Framwork加载都是由DYLD加载进入内存被执行的
    • 注入成功的库路径会写入到MachO文件的LC_LOAD_DYLIB字段中
  • Dylib注入
    • 通过Xcode新建Dylib库(注意:Dylib属于MacOS所以需要修改属性)
    • 添加Target依赖,让Xcode将自定义Dylib文件打包进入APP包。
    • 利用yololib进行注入。

二、MethodSwizzle

利用OC的Runtime特性,动态改变SEL(方法编号)和IMP(方法实现)的对应关系,达到OC方法调用流程改变的目的。主要用于OC方法。

  • 多种HOOK方式
    • class_addMethod方式:利用AddMethod方式,让原始方法可以被调用,不至于因为找不到SEL而崩溃
    • class_replaceMethod方式:利用class_replaceMethod,直接给原始的方法替换IMP
    • method_setImplementation方式:利用method_setImplementation,直接重新赋值原始的新的IMP

相关文章

网友评论

      本文标题:代码注入&MethodSwizzle

      本文链接:https://www.haomeiwen.com/subject/gedumctx.html