美文网首页
代码注入&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