最近体验了iOS11 Beta版,感觉还不错,就是离开了越狱感觉缺少了很多乐趣,今天我们就用玉令天下的FishChat注入WeChat来练练手。

添加功能

  • 屏蔽群消息
  • 屏蔽好友消息
  • 消息防撤回
  • 微信运动自定义步数
  • 关闭朋友圈
  • 去除小红点
  • 夜间模式

准备工作

  • macOS系统
  • Xcode 9 beta
  • iOSOpenDev
  • WeChat.ipa

安装Xcode 9

首先进入苹果开发者网站下载「Xcode 9」。

然后进入设置,在Accounts选项中,加入自己的开发者账号。

安装iOSOpenDev

首先安装dpkg,这里推荐用brew软件管理器。

打开「终端」,输入以下命令安装brew:

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

安装brew可能需要一段时间 (最好能够搭个梯子,你懂的) ,显示Installation successful!字样就代表安装成功了。

然后再输入以下代码安装dpkg:

 brew install dpkg 

安装完成后,在官网下载「iOSOpenDev」,然后点击iOSOpenDev-1.6-2.pkg安装。

Ps:安装过程中如果出错,就进行以下步骤。

  1. 下载「附件」,打开Specifications文件夹。
  2. iPhoneOS开头的四个文件放入Xcode.app/Content/Developer/Platforms/IphoneOS.platform/Developer/Library/Xcode/Specifications/文件夹下。「如果没有,请自己创建一个」
  3. iPhone Simulator开头的另外四个文件放入Xcode.app/Content/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications/文件夹下。「如果没有,请同样创建一个」
  4. 然后在Xcode.app/Content/Developer/Platforms/iPhoneSimulator.platform/Developer/文件夹下创建/usr/bin/文件夹。
  5. 完成后再重新安装iOSOpenDev即可。

生成dylib文件

首先去「https://github.com/Uni9k/FishChat」下载我修改过的FishChat。「因为个性化需求,所以在玉令天下的FishChat基础上做了些许修改,可以查看源码中查看只是注释掉了,如果需要可以自己加回来。」

然后使用Xcode打开这个项目,依次点击FishChatGeneral,然后在Team中选择自己的开发者账号。

然后将iPhone连接到USB上,选择已连接的iPhone设备,然后点击三角播放按钮进行编译。

编译完成后,便会生成一个dylib文件,右键这里选择Show in Finder,将它拷贝出来。

生成mobileprovision文件

然后我们还需要一个mobileprovision文件,首先新建一个项目,名称随便写,设置好证书。

然后选择设备,点击三角播放按钮进行编译。

在Dock上右键Finder,选择「前往文件夹...」,输入以下地址:

 ~/Library/MobileDevice/Provisioning Profiles 

拷贝出刚刚生成的mobileprovision文件。

注入、签名、打包

安装mobiledevice用于将打包好的应用安装到设备上,打开终端输入:

 brew install mobiledevice 

我们需要把要注入的dylib拷贝进App,然后向App中可执行文件的Load Commands段中加入一条加载dylib的指令,然后进行签名。因为过程比较繁杂,为了方便这里就用脚本直接代替了,在刚刚下载的FishChat中的Shell文件夹中已经包含了这个脚本。

# !/bin/bash
SOURCEIPA="$1"
MOBILEPROV="$2"
DYLIB="$3"
cd ${SOURCEIPA%/*}

security find-identity -v -p codesigning > cers.txt
while IFS='' read -r line || [[ -n "$line" ]]; do
    if [[ "$line" =~ "iPhone Developer" ]]; then
        DEVELOPER=${line:47:${#line}-48}
    fi
done < cers.txt

unzip -qo "$SOURCEIPA" -d extracted

APPLICATION=$(ls extracted/Payload/)
echo "Copying dylib and mobileprovision"
cp "$DYLIB" "extracted/Payload/$APPLICATION/${DYLIB##*/}"
cp "$MOBILEPROV" "extracted/Payload/$APPLICATION/embedded.mobileprovision"

echo "Insert dylib into Mach-O file"
yololib "extracted/Payload/$APPLICATION/${APPLICATION%.*}" "${DYLIB##*/}"
echo "Resigning with certificate: $DEVELOPER"
find -d extracted  \( -name "*.app" -o -name "*.appex" -o -name "*.framework" -o -name "*.dylib" \) > directories.txt security cms -D -i "extracted/Payload/$APPLICATION/embedded.mobileprovision" > t_entitlements_full.plist /usr/libexec/PlistBuddy -x -c 'Print:Entitlements' t_entitlements_full.plist > t_entitlements.plist
while IFS='' read -r line || [[ -n "$line" ]]; do
    /usr/bin/codesign --continue -f -s "$DEVELOPER" --entitlements "t_entitlements.plist"  "$line"
done < directories.txt

echo "Creating the Signed IPA" cd extracted zip -qry ../extracted.ipa *
cd ..

rm -rf "extracted"
rm directories.txt
rm cers.txt
rm t_entitlements.plist
rm t_entitlements_full.plist
echo "Installing APP to your iOS Device"
mobiledevice install_app extracted.ipa 

因为App Store中的安装包都是加密了,这里方便起见,我们直接下载一个脱壳的WeChat.ipa安装包就行了,打开PP助手,在越狱应用中下载到本地。

然后打开终端,将sh脚本文件,ipa安装包,mobileprovision文件,dylib文件依次拖入,回车。

显示OK字样代表安装成功了。

Enjoy it!