IOS逆向-微信(6.6.0)砸壳和重签名

一.所需要的工具

1.ios APP Signer用来进行自动签名。

2.PP助手,已越狱的手机。

3.iFunBox,用来访问越狱手机的系统文件和应用。

4.越狱手机上需要通过Cydia安装OpenSSH插件,用来远程访问设备。(SSH连接越狱IPhone);Cycript插件,在越狱手机上运行的脚本语言。

5.能够将APP和FrameWork中的二进制文件一起砸壳的工具decript_wechat.dylib,如果微信版本较低,不含有FrameWork须使用(已经编译过的dempdecrypt,dumpdecrypted源码)




二.首先对APP包进行砸壳

两种方式:

第一种方式(简单):通过越狱手机的PP助手下载的IPA包(设置为安装后不删除安装包,一般的安装包下载路径为/var/mobile/Library/PPHelperNS3/Docu

ments/User/Soft/xxx.ipa),通过iFunBox中找到该路径,copy to mac即可。


第二种方式(重点):

1.ssh连接设备(略过,看上面链接)。"ps -e | grep WeChat" 查看微信进程的所在路径

图1.查看微信进程的路径

上面的进程路径 "/var/containers/Bundle/Application/8D453900-8EB6-4FED-8EF9-8C12081C8DCA/WeChat.app/WeChat" 拷贝下来备用.

2.在进程上使用Cycript脚本语言。"cycript -p 进程名/进程id",这条命令输入后终端会切换到 "cy#"。之后利用 "NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]" 查看沙盒路径。

图2.获取APP的沙盒路径

上面的沙盒路径 "/var/mobile/Containers/Data/Application/F15C5217-F832-4FDC-898D-0E8FD7FCBF8E/Documents" 也要拷贝下来备用。

3.之后执行两次 "crl + D",退出脚本和ssh。之后使用iFunBox找到刚刚拷贝的进程路径,将WeChat.app文件拷贝至电脑。

IOS逆向-微信(6.6.0)砸壳和重签名_第1张图片
图3

此处不能使用scp命令(下面会用到),因为scp只能拷贝文件,但WeChat.app会被识别为文件夹

4.将事先下载好的 decript_wechat.dylib 文件拷贝至沙盒路径 "scp decript_wechat.dylib路径 root@设备ip:沙盒路径"。

图4.将砸壳文件放入沙盒

连上ssh后,cd到沙盒路径下,使用 ls 可以查看是否有decript_wechat.dylib文件。

5.重新切换为ssh命令,执行 decript_wechat.dylib 或者 dumpdecrypt.dylib 文件进行砸壳(根据微信包的版本以及包中是否含有framework文件夹),DYLD_INSERT_LIBRARIES=.dylib路径 空格 目标进程路径。

IOS逆向-微信(6.6.0)砸壳和重签名_第2张图片
图5.砸壳操作及结果

谨慎起见,先 ls 查看砸壳文件是不是在,之后执行 su mobile 命令放置 kill 9 错误。可以看到输出中有.decrypt后缀的内容,这就是砸壳后的可执行文件,一般来说,不包含framework的只会输出WeChat.decrypt,包含的话会生成与framework名对应的.decrypt文件,如图中的WCDB.decrypt

6.将沙盒路径下所有后缀为.decrypted的文件拷贝到电脑上备用(使用iFunBox可多个复制)。

IOS逆向-微信(6.6.0)砸壳和重签名_第3张图片
图6.砸壳后的可执行文件

7.去除.decrypted文件的后缀(一定要 显示简介 查看是不是真的去掉了后缀),并一一对应替换,WeChat替换包中的WeChat,如果包含frameWork文件夹就点开文件夹中的每个.framework根据名称一一替换。

IOS逆向-微信(6.6.0)砸壳和重签名_第4张图片
图7.替换Frameworks中的可执行文件

可以使用 "otool -l  可执行文件路径 | grep -B 2 crypt"一一检查可执行文件是否成功砸壳,cryptid为0,说明未加密,砸壳成功;为1,说明砸壳失败。

IOS逆向-微信(6.6.0)砸壳和重签名_第5张图片
图8.鉴别砸壳成功

8.注意,微信包中的PlugIns和Watch文件夹要进行删除,因为无法砸壳和重签名,删了就好

IOS逆向-微信(6.6.0)砸壳和重签名_第6张图片
图9.删除Plugins和Watch文件夹

至此,砸壳的步骤已经完成,下面进行重签名。




三.对.app进行重签名,并打包为ipa文件。

注意,一定要是在非越狱机和越狱机上都能正常安装且不闪退才能证明是重签成功。

1.相关的APP证书和齿轮文件,如果是发布证书,对应的齿轮文件应当选择Adhoc,并下载至电脑,齿轮文件双击,证书导入钥匙串;齿轮文件也可以利用新建工程从Xcode中show in Finder查找(我是用的是第一种)。

2.查找微信包中的info.plist,注意最下面一行,UISupportDevices,里面未包含iPhoneX,因此我使用 X 安装不上,因此建议删除该项。

IOS逆向-微信(6.6.0)砸壳和重签名_第7张图片
图10.删除UISupportDevices

3.打开ios App Singer,导入.app文件,选择对应的证书和齿轮文件,点击start即可打包成.ipa文件,然后通过PP助手或者iFunBox即可完成安装。

IOS逆向-微信(6.6.0)砸壳和重签名_第8张图片
图11.打包ipa

4.最后附上安装在未越狱的iPhone X上成功的截图,标注的即为重签名的微信,点开可以正常运行。


IOS逆向-微信(6.6.0)砸壳和重签名_第9张图片
图12.结果


以上就是大致步骤,如有错误请指正,刚刚入门,微信版本的更新也可能会增加其他操作,会持续更新,有问题欢迎交流。

你可能感兴趣的:(IOS逆向-微信(6.6.0)砸壳和重签名)