iOS逆向笔记(微信自动抢红包)

前戏

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

正题

1. ssh 连接iPhone
ssh root@iphone_ip

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

2. 获取微信的路径

a). 首先找到微信的可执行文件的具体路径;
iPhone启动微信,通过以下命令获取

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

3. 编译dumpdecrypted

Github上下载最新的 dumpdecrypted 源码;
进入下载的文件目录执行 make 编译获得 dumpdecrypted.dylib 文件
拷贝dumpdecrypted.dylib到iPhone上

scp dumpdecrypted.dylib [email protected]:/var/mobile/Applications/4FB2F319-3ECA-4EE9-B17E-22632471F409/Documents

获取微信头文件

砸壳

其实这一步可以略过,直接从第三方市场下载已经砸壳的ipa解压即可,当本身就是为了学习来的,就顺便学习下砸壳的方法。

执行以下代码

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
iOS逆向笔记(微信自动抢红包)_第1张图片

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

拷贝砸壳生成的文件WeChat.decrypted文件到电脑上

dump 微信的可执行文件
class-dump --arch armv7 hello.decrypted -H -o ./heads

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


iOS逆向笔记(微信自动抢红包)_第2张图片
砸壳后获取的部分头文件

干些羞羞的事

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

抢个红包

好像之前看到过一个教程。嗯那咋也搞搞看。
其实这里主要是通过创建动态库的方式 HOOK 微信中的两个方法

  • CMessageMgr.h 中的 - (void)AsyncOnAddMsg:(id)arg1 MsgWrap:(id)arg2;
  • WCRedEnvelopesLogicMgr.h 中的- (void)OpenRedEnvelopesRequest:(id)arg1;
利其器
  • 工具安装
    首先要安装iOSOpenDev
    Xcode7可以参考文章《在xcode7下安装iOSOpendev,并使用iOSOpendev模板编译iOS9钩子》

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

iOS逆向笔记(微信自动抢红包)_第3张图片
安装失败

解决方法(安装those):

  1. 下载MacPorts并安装(耐心等这一步有点慢)
    更新一下
    sudo port -v selfupdate
  1. 安装dpkg(用于打包.deb文件)

    sudo port -f install dpkg
    
  2. 安装those

    export THEOS=/opt/theos
    sudo git clone -b stableversion https://github.com/haorenqq/theos/ $THEOS
    
  3. 安装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
iOS逆向笔记(微信自动抢红包)_第4张图片
Xcode iOSOpenDev
善其事
  • 创建 dylib 工程
    编写HOOK代码
    GitHub上也有现成的 https://github.com/east520/AutoGetRedEnv

  • 使用yololib 将 dylib 注入到 WeChat.decrypted

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

./yololib WeChat libAutoRedEnvelopesGet.dylib
iOS逆向笔记(微信自动抢红包)_第5张图片
14696002963960.png
  • 生成Entitlements.plist文件
iOS逆向笔记(微信自动抢红包)_第6张图片
Enitilements.plist
重签名

把生成的dylib、
刚刚注入dylib的WeChat、
以及embedded.mobileprovision文件(就是你自己打包的provision文件,在之前打包过的App也中能找到)
拷贝到WeChat.app(可以通过iTunes下载解压得到)中

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

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

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

最后打包

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

小编用上面的方法试了签名成功但是一直安装失败, 上网找了半天也没解决,最后在GitHub上搞了一个重签名工具 ( https://github.com/DanTheMan827/ios-app-signer ) 重新签名后在越狱手机上安装成功,但自己的iPhone6上还是安装失败(砸壳的获取cpu指令集不同)。
最后直接从PP助手上下载一个已砸壳的应用注入重签名就可以了。
用AppResign重签名

./AppResign WeChat.app WeChat.ipa

事后一根烟

虽然前辈有很多经验可以参考,但是自己实际操作中间还是走了很多坑,最后成功安装不crash还是蛮兴奋的。
附上一些参考文章
http://www.jianshu.com/p/189afbe3b429
http://www.jianshu.com/p/844ae6180ed7
http://iosre.com/t/topic/2966

你可能感兴趣的:(iOS逆向笔记(微信自动抢红包))