iOS逆向 给微信添加新功能

in Tutorials

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

添加功能

准备工作

安装Xcode 9

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

QQ20170714-142440@2x.png

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

安装iOSOpenDev

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

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

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

安装brew可能需要一段时间,显示Installation successful!字样就代表安装成功了。

QQ20170714-183922@2x.png

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

brew install dpkg

Ps:因网络原因可能安装需要一段时间,耐心等待下就好了,可能会安装失败,重新安装即可。

安装完成后,在官网下载「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基础上做了些许修改,可以查看源码中查看只是注释掉了,如果需要可以自己加回来。」

QQ20170714-171114@2x.png

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

QQ20170714-234110@2x.png

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

QQ20170714-234906@2x.png

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

QQ20170715-040300@2x.png

生成mobileprovision文件

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

QQ20170715-040724@2x.png

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

QQ20170715-040918@2x.png

在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文件依次拖入,回车。

QQ20170715-042808@2x.png

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

QQ20170715-184859.png

Enjoy it!

Comments
  1. xia  Mac OS X 10.12.5 Safari 10.1.1

    我的手机是10.3.2,按照操作最后一步失败了,请教一下为啥??
    Installing APP to your iOS Device
    !AMDeviceSecureTransferPath

    Reply
    1. Uni9k  Mac OS X 10.12.5 Safari 10.1.1
      @xia

      mobileprovision文件重新提取试试

      Reply
  2. 0xJacky  Mac OS X 10.12.6 Safari 10.1.2

    独王又潜水啦

    Reply
    1. Uni9k  Mac OS X 10.12.5 Safari 10.1.1
      @0xJacky

      哈哈哈

      Reply
      1. shippom  Mac OS X 10.12.4 Google Chrome 60.0.3112.90
        @Uni9k

        wechat6.5.1 按上述步骤操作后没有上述功能

        Reply