初始化配置iOSOpenDev的Xcode项目

去掉Deploymen Info中的Mac和确保iOS版本一致

此处,先去做第一个配置方面的改动:

  • TARGETS->General->Deploymen Info:去掉Mac,因为我们开发的是iOS的插件,不需要发布到Mac,且设置好iOS的最低版本
    • deployment_remove_mac
  • PROJECT->Info->Deployment Target->iOS Deployment Target,也要同步设置iOS的最低版本
    • target_deployment_ios_version

导入依赖库libsubstrate.dylib

libsubstrate.dylib(一般在/opt/iOSOpenDev/lib/libsubstrate.dylib):

import_libsubstrate_dylib

导入到项目中的:Targets->YourProjectName->Build Phases->Link Binary With Libraries

imported_link_lib

设置被hook的app包名或二进制文件名

去把要hook的,被拦截的app的包名,加到被hook的包名的列表中:

YourProjectName->YourProjectName->Package->Libarary->MobileSubstrate->DynamicLibraries->CurrentProjectBundleIdentifier.plist

Root->Filter->Bundles,会看到Item 0

  • TypeString
  • Value:填入你要hook的app的包名
    • 举例
      • com.crifan.ShowSystemInfo

set_filter_bundle

  • 另外
    • 如果要新增一行
      • 移动到Item 0所在的行,会看到出现个=加号,点击加号,会新增一行

如何hook二进制?

如果需要hook二进制,则是新建Array类型的(和Bundles并列的)Executables子项,再加上对应的二进制文件名

举例:

  • hook二进制:akd = AuthKit.framework的daemon进程
    • hook_target_executables_akd

此时,对应的plist文件内容是:

  • jailAppleAccount/Package/Library/MobileSubstrate/DynamicLibraries/jailAppleAccount.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>Filter</key>
      <dict>
        <key>Executables</key>
        <array>
          <string>akd</string>
          <string>amsaccountsd</string>
          <string>AppleMediaServices</string>
          <string>AppleAccount</string>
          <string>Preferences</string>
        </array>
        <key>Bundles</key>
        <array>
          <string>com.apple.Preferences</string>
        </array>
      </dict>
    </dict>
    </plist>
    

更新iOSOpenDev相关设置

设置iPhone的IP

把此处要把iOS调试设备(iPhone)中的IP地址:

iphone_ip_address

此处是:192.168.1.27

去加到配置中去:

  • iOSOpenDevDevice = 192.168.1.27

user_define_device_ip

更新iOSOpenDevUsePackageVersionPList为NO,确保版本更新能生效

以及参考后续的:

control的Version版本号的改动会丢失

再去从:

  • iOSOpenDevUsePackageVersionPList = YES

改为:

  • iOSOpenDevUsePackageVersionPList = NO

更新后的配置是:

iOSOpenDevBuildPackageOnAnyBuild = NO
iOSOpenDevCopyOnBuild = NO
iOSOpenDevDevice = 192.168.1.27
iOSOpenDevInstallOnAnyBuild = NO
iOSOpenDevInstallOnProfiling = YES
iOSOpenDevPath = /opt/iOSOpenDev
iOSOpenDevRespringOnInstall = YES
iOSOpenDevUsePackageVersionPList = NO

xcode_iosopendevusepackageversionplist_no

另外,理论上,去把对应变量加到环境变量:

➜  ~ cat ~/.zshrc | grep iOSOpenDevDevice
export iOSOpenDevDevice=192.168.1.27

效果应该也是一样的。

确保ssh登录且是ssh免密登录

  • 此处要弄好SSH登录,且是ssh免密登录
    • 背景
      • Xcode+iOSOpenDev的编译安装最后阶段,涉及到,自动通过ssh访问iPhone设备,把生成的.deb插件的文件下载和安装到iPhone中
      • 此时就需要先准备好环境:确保Mac中可以,ssh的免密登录iPhone
    • 概述
      • 先用ssh登录一次iPhone
        • 命令
          ssh root@192.168.1.27
          
        • 输入密码
          • OpenSSH的默认密码是:alpine
        • 即可登录到iPhone中
      • 把ssh的key拷贝到iPhone中
        • 命令
          ssh-copy-id root@192.168.1.27
          
        • 输入密码:alpine
    • 详解

results matching ""

    No results matching ""