iOS逆向笔记(微信红包)

艾泽拉斯的酋长

前戏

  1. 越狱手机;
  2. Cydia 安装 ssh(用于电脑ssh连接);
  3. Cydia 安装 adv-cmds(用于 ps -e 查看进程方便查找目标 App 位置);
  4. Cydia 安装 cycript (查看App 的 Documents 路径);

正题

ssh root@iphone_ip

然后输入密码 默认情况下是: alpine

   a). 首先找到微信的可执行文件的具体路径;

    ps -e | grep WeChat

<!--/var/mobile/Applications/4FB2F319-3ECA-4EE9-B17E-22632471F409/WeChat.app/WeChat-->

    b). Cycript找出微信的Documents的路径;(*ps:这一步不要锁屏*)

cycript -p WeChat
cy#NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]

<!--/var/mobile/Applications/4FB2F319-3ECA-4EE9-B17E-22632471F409/Documents-->

Github上下载了最新的 [dumpdecrypted](https://github.com/stefanesser/dumpdecrypted) 源码;

进入下载的文件目录执行 make 编译获得 dumpdecrypted.dylib 文件

拷贝dumpdecrypted.dylib到iPhone上

scp dumpdecrypted.dylib root@10.8.182.11:/var/mobile/Applications/4FB2F319-3ECA-4EE9-B17E-22632471F409/Documents

获取微信头文件

砸壳

DYLD_INSERT_LIBRARIES=/var/mobile/Applications/4FB2F319-3ECA-4EE9-B17E-22632471F409/Documents/dumpdecrypted.dylib /var/mobile/Applications/4FB2F319-3ECA-4EE9-B17E-22632471F409/WeChat.app/WeChat

看到这样的图就表示砸壳成功了!

用scp拷贝WeChat.decrypted文件到电脑上

dump 微信的可执行文件

class-dump --arch armv7 hello.decrypted -H -o ./heads

注意:当砸壳完毕后,使用 class-dump 仍然只导出 CDStructures.h 一个文件,则可能架构选择错误;因为 dumpdecrypted 只会砸你手机处理器对应的那个壳,fat binary 的其它部分仍然是有壳的,而 class-dump 的默认目标又不是被砸壳的那个部分,因此很有可能就会报错。解决办法:--arch 指定cpu架构

dump出来的头文件

干些羞羞的事

好不容易搞到了 WeChat 的头文件,就这么算了也太没劲了。总要搞点见不得人的事。

抢个红包

好像之前看到过个教程(这个可以看冰与火之歌)。嗯那咋也搞搞看。

其实这里主要是通过创建动态库的方式 HOOK 微信中的两个方法

CMessageMgr.h 中的 - (void)AsyncOnAddMsg:(id)arg1 MsgWrap:(id)arg2;

和 WCRedEnvelopesLogicMgr.h 中的- (void)OpenRedEnvelopesRequest:(id)arg1;

首先要安装[iOSOpenDev](https://www.macports.org/install.php)

Xcode7可以参考文章[《在xcode7下安装iOSOpendev,并使用iOSOpendev模板编译iOS9钩子》](http://bbs.iosre.com/t/xcode7-iosopendev-iosopendev-ios9/1963)

当然你可能还是会有以下问题

安装失败

解决方法(安装those):

1. 下载[MacPorts](https://www.macports.org/install.php)并安装(耐心等这一步有点慢)

更新一下

sudo port -v selfupdate

2. 安装dpkg(用于打包.deb文件)

sudo port -f install dpkg

3. 安装those

export THEOS=/opt/theos
sudo git clone -b stableversion https://github.com/haorenqq/theos/ $THEOS

4. 安装iOSOpenDev

什么?还是安装失败?请继续。

进入系统根目录的opt文件夹会发现一个iOSOpenDevSetup文件,

cd /opt/iOSOpenDevSetup/bin
sudo ./iod-setup base
sudo ./iod-setup sdk -sdk iphoneos

验证:查看 /Users/taizi/library/developer/xcode/ 路径下是否有 Templates/iOSOpenDev,或者执行

cat ~/.bash_profile

查看输出是否包含

export iOSOpenDevPath=/opt/iOSOpenDev

export iOSOpenDevDevice=

export PATH=/opt/iOSOpenDev/bin:$PATH

现在启动xcode,新建工程,会多出一个“iOSOpenDev”的模板

* 创建 dylib 工程

GitHub上也有现成的 https://github.com/east520/AutoGetRedEnv

* 使用[yololib](https://github.com/KJCracks/yololib) 将 dylib 注入到 WeChat.decrypted

先把之前保存的 WeChat.decrypted 重命名为 WeChat 用 yololib 注入

./yololib WeChat libAutoRedEnvelopesGet.dylib
注入 dylib

重签名

把生成的dylib、

刚刚注入dylib的WeChat、

以及embedded.mobileprovision文件(可以在之前打包过的App中找到)

拷贝到WeChat.app(可以通过iTunes下载解压得到)中

分别用codesign命令来为微信中的相关文件签名

codesign -f -s 证书名字 目标文件

`xcrun -sdk iphoneos PackageApplication -v WeChat.app -o ~/WeChat.ipa`

> codesign -f -s "iPhone Distribution: xxx" WeChat.app/libAutoRedEnvelopesGet.dylib

> codesign -f -s "iPhone Distribution: Hangzhou Ouer Technology Co., Ltd" WeChat.app/Watch/WeChatWatchNative.app

> codesign -f -s "iPhone Distribution: xxx" WeChat.app/PlugIns/WeChatShareExtensionNew.appex

> codesign -f -s "iPhone Distribution: xxx" WeChat.app/Watch/WeChatWatchNative.app/PlugIns/WeChatWatchNativeExtension.appex

> codesign -f -s "iPhone Distribution: xxx" --entitlements Entitlements.plist WeChat.app

> codesign -f -s "iPhone Distribution: Hangzhou Ouer Technology Co., Ltd" --entitlements Entitlements.plist WeChat.app/Watch/WeChatWatchNative.app


小编用上面的方法试了签名成功但是一直安装失败, 上网找了半天也没解决,最后在GitHub上搞了一个重签名工具 ( https://github.com/DanTheMan827/ios-app-signer ) 重新签名(包括不注入任何东西,仅重新签名)后在越狱手机上安装成功,但自己的iPhone6上还是安装失败(砸壳的cpu指令集不同)。

最后重新砸壳(或者直接从PP助手上下载一个已砸壳的应用)就可以了。

用AppResign重签名-(ps:记得删除WeChat.app里面的Watch文件夹,否则会安装不成功)

./AppResign WeChat.app WeChat.ipa

事后一根烟

虽然前辈有很多经验可以参考,但是中间还是走了很多坑,最后成功安装不crash还是蛮兴奋的。

附上一些参考文章

http://www.jianshu.com/p/189afbe3b429

http://www.jianshu.com/p/844ae6180ed7

http://iosre.com/t/topic/2966