美文网首页
iOS非越狱状态下对ipa包注入代码(调用自己framework

iOS非越狱状态下对ipa包注入代码(调用自己framework

作者: 枫叶情结 | 来源:发表于2019-08-19 22:13 被阅读0次

    声明

    本文仅仅是自己学习逆向的记录,承诺不作任何危害社会的事情!

    demo场景

    创建自己的framework和测试App,将framework嵌入到目标App中,然后测试App发送推送,目标App收到推送。

    使用场景

    将代码注入到任意App内

    代码注入原理

    众所周知,iOS app 在打包的过程中将代码全部转换成了 可执行文件 Mach - O 文件,所以我们直接改源码是万万不可能的(除非你拿到的源码,话说你源码都拿到了你还逆向个啥?)。那么我们可不可以以第三方lib的方式注入呢?必须可以啊!!

    那么怎么才能将第三方的lib 注入目标程序呢?这个我们要从二进制文件的结构说起,Mach-O文件的数据主体可分为三大部分,分别是头部(Header)、加载命令(Load commands)、和最终的数据(Data)。mobileloader会在目标程序启动时,会根据指定的规则检查指定目录是否存在第三方库,如果有,则会通过修改二进制的loadCommands,来把自己注入进所有的app当中,然后加载第三方库。

    代码注入思路

    dyld会动态加载ipa包内Frameworks中所有的动态库,那么在Frameworks中增加一个自己的动态库(framework),然后在自己动态库中写要注入的代码。

    准备

    1、yololib
    下载地址:https://github.com/KJCracks/yololib?spm=a2c4e.11153940.blogcont63256.9.5126420eAJpqBD

    下载成功后,运行工程,把工程里面的yololib拷贝出来(下图红框内文件),然后把yololib复制到/usr/local/bin,后面便可直接在终端用命令行使用


    WeChat68da7655dfe4f0295945b7cd55bef82f.png

    2、目标ipa包

    3、注入的代码(framework)

    开始

    1、解压ipa包---->显示包内容---->替换包内证书配置文件(embedded.mobileprovision)
    2、将要注入的代码(Hook.framework)拷贝到包内的Frameworks文件夹中


    WeChatd7462d70cbf25202a106828ea65ec6e1.png

    3、使用yololib去添加动态库依赖(修改目标App文件夹的ipa包中的MachO),将Hook.framework(添加到Frameworks文件夹内的)加到ipa包中MachO文件
    解压ipa,找到MachO文件


    WeChatd7462d70cbf25202a106828ea65ec6e1.png

    cd到App所在文件夹下
    使用命令
    yololib TestApp Frameworks/Hook.framework/Hook
    第一个参数指定被修改的mach-o文件的路径,第二个参数指定动态库的路径
    主要,这边的TestApp后面不要带上.app,比如TestApp.app,只要写TestApp


    WeChatd3ed1ba697ca11a731b1e4ea53e16651.png

    看到complete! 说明添加动态库依赖成功

    接下来将Payload压缩生成一个Payload.zip,接着将Payload.zip后缀名改成.ipa,生成Payload.ipa,并对Payload.ipa重签名

    重签名成功后,将App安装到手机上运行


    WeChatc3e2aa06653fcff50d2057bfd7aefda2.png

    推送过来了,说明代码注入成功了!

    相关文章

      网友评论

          本文标题:iOS非越狱状态下对ipa包注入代码(调用自己framework

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