美文网首页ios开发
iOS代码注入&Method Swizzle技术

iOS代码注入&Method Swizzle技术

作者: spyn_n | 来源:发表于2021-04-25 20:42 被阅读0次

    说明:本文仅限于说明其技术点,没有别的,不要做坏事

    注入

    代码注入方式:动态库framework注入,dylib注入;

    • 动态库注入

    1、使用脚本重签名。
    2、创建framework,编译。
    3、使用yololib手动注入MachO
    cd到.app包中,指令:yololib WeChat Frameworks/SPYHook.framework/SPYHook
    4、替换掉ipa包中的MachO文件
    5、重新打包成ipa包(便于用脚本重签名,自动解压得到已经注入的.app包)
    结果查看:

    image.png
    • dylib注入

    1、新建一个工程安装到手机上(其实就是需要从苹果服务器拿到描述文件)
    2、可以使用脚本重新签名,先看一下是否成功。iOS应用重签名点这里
    3、新建Library
      如图点击项目Dylib注入-->在TARGETS点下面的+-->选择macOS,搜索library,选择Library,点击Next

    image.png
    image.png
      如图点击新建的LibraryPSYHook-->Build Setting-->在搜索中输入base,定位到ArchitecturesBase SDK,修改为iOS
    image.png
      如图点击新建的LibraryPSYHook-->Build Setting-->在搜索中输入sign,定位到signingCode Signing identity,修改为iOS Developer
    image.png
    4、添加Copy Files
      选择项目TAEGETS --> Build Phases --> + --> NewCopy File Phase,确认添加库,以及DestinationFrameworks image.png
    image.png
    5、在库的.m文件的+load方法中写注入代码
    image.png

    6、查看注入结果:

    image.png
    【注意Run ScriptCopy Files的顺序,Run Script在上面,斗则会崩溃,因为我的dylib注入的脚本指令是在,重签名脚本指令之后,确保找到APPMachO路径才可以正常操作】
    image.png

    Method Swizzle

    使用class_getInstanceMethod获取到需要HOOK的方法,然后method_exchangeImplementations交换方法的实现。

    image.png

    当我们注入成功后,我们一般要先进行动态调试,从界面入手,找到对应的类和事件名称,如图:


    image.png

    第一种方式:通过class_addMethod配合method_exchangeImplementations
    第二种方式:直接使用class_replaceMethod
    第三种方式:method_getImplementationmethod_setImplementation
    拿到其登录的密码并窗口弹出:

    image.png

    相关文章

      网友评论

        本文标题:iOS代码注入&Method Swizzle技术

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