iOS 破壳 & dylib 注入

下面本人自己试验成功的步骤。看到还有很多其他的步骤来达到相同的目的,根据自己喜好熟练度选择。

环境

  • theos 创建dylib

  • yololib 将动态库加入到Load Commands。
    用法:
    ./yololib mach-o(需要注入的二进制文件) custom.dylib
    查看:
    otool -L math-o

  • ipa打包
    压缩 以下文件。注意: 不能是直接压缩最外层的文件夹,需选中两个文件压缩。

├── Payload
└── iTunesArtwork
  • 重签
    sigh resign ***.ipa
    选中需要用的 证书 & mobileprovision

疑难

  • 找不到 /common.mk文件。
    执行 export THEOS=/opt/theos ,关闭终端后失效。
  • 在安装ipa时提示 dylib 版本号0.0.0 ,不符合最低 1.0.0 要求。
    在Makefile中添加
ARCHS = armv7 armv7s arm64
...
_THEOS_TARGET_LDFLAGS += -current_version 1.0
_THEOS_TARGET_LDFLAGS += -compatibility_version 1.0
  • 安装ipa后,打开崩溃。显示无法加载 自定义的dylib。
    非越狱手机依赖需要 libsubstrate.dylib
    步骤:

    • 去theos安装目录查找。 /opt/iOSOpenDev/lib/libsubstrate.dylib
    • 替换自定义dylib中依赖路径。
      install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib ioswechatselectall.dylib
    • 然后把 自定义dylib 和 libsubstrate.dylib 复制到需要注入的ipa bundle根目录中。
  • 修改完Load command 之后,执行 ldid进行签名。
    详情

     ldid -S Wechat
    

    第二种修改 load command的方法 (推荐)

    Install
    optool install -c load -p "@executable_path/RedEnvelop.dylib" -t WeChat
    Uninstall
    optool uninstall -p "@executable_path/RedEnvelop.dylib" -t WeChat

  • 库剥离&合并

    剥离:

    lipo -thin armv7 xxxx.dylib -output xxxx_v7.dylib
    lipo -thin arm64  xxxx.dylib -output xxxx_64.dylib
    

    合并:

    lipo -create ./xxxx_v7.dylib ./xxxx_64.dylib -output ./xxxx.dylib
    
  • 查看本地全部已安装证书

security find-identity -p codesigning -v
  • 查看App签名信息| bundle Name,mach0 path
    codesign -vv -d ZHSign.app

  • 最新破壳方法
    frida 一键破壳。方便到令人发指。。。

// 电脑链接手机,修改ssh端口为 2222.    
iproxy 2222 22
// 如果都没有问题,执行以下命令就可以在当前目录下看到破壳后的ipa
./dump.py  微信


由于简述无法上传附件。github也有大小限制。如果需要破壳ipa的童鞋,可以email给我。[email protected]

你可能感兴趣的:(iOS 破壳 & dylib 注入)