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文件到电脑上
class-dump --arch armv7 hello.decrypted -H -o ./heads
注意:当砸壳完毕后,使用 class-dump 仍然只导出 CDStructures.h 一个文件,则可能架构选择错误;因为 dumpdecrypted 只会砸你手机处理器对应的那个壳,fat binary 的其它部分仍然是有壳的,而 class-dump 的默认目标又不是被砸壳的那个部分,因此很有可能就会报错。解决办法:--arch 指定cpu架构
好不容易搞到了 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的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