1.准备工作:
(1)一台越狱手机,并装有以下软件:cycript,openssh
(2)下载工具库,内容列表:
![](https://i-blog.csdnimg.cn/blog_migrate/0d0764e8a73a8d7b610d1aa78ceec8ad.webp?x-image-process=image/format,png)
(3)在越狱手机上,从appstore上,下载WeChat(微信)。
2.ssh到手机终端
(1)打开Mac的终端窗口,运行工具库的USBSSH目录下的tcprelay.py,执行命令:
/Users/fujin/Desktop/USBSSH/tcprelay.py -t 22:2222
![](https://i-blog.csdnimg.cn/blog_migrate/4b4f810196e857804d983d3ed59eb688.webp?x-image-process=image/format,png)
(2)另打开一个Mac的终端窗口,执行命令:
ssh root@127.0.0.1 -p 2222
运行后,提示输入密码:alpine(默认密码)
![](https://i-blog.csdnimg.cn/blog_migrate/ac97bae4fc580215737db8c769bdab6c.webp?x-image-process=image/format,png)
3.安装Theos开发工具:
(1)另开启一个Mac终端窗口,cd到Theos-Script-master目录,执行命令:
./TheosScript.sh 回车,运行效果如图,输入 1 回车:
![](https://i-blog.csdnimg.cn/blog_migrate/d0a2610f46af33216013f256f03e46a8.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/3dec6d7df1fcd3befe3c27077e1e045f.webp?x-image-process=image/format,png)
(2)安装完毕后,在终端输入cd /opt/theos,如果有内容说明安装成功 ,如图:
![](https://i-blog.csdnimg.cn/blog_migrate/7362012f3d393491fb741e54d58660d4.webp?x-image-process=image/format,png)
4.砸壳和导出微信头文件:
(1)手机运行微信,保持在前台。找到刚才ssh成功的终端窗口,执行命令:ps -e,然后找到微信运行的进程id。
![](https://i-blog.csdnimg.cn/blog_migrate/f7aa70620325a19b37feb331d5957bc4.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/9c1b9e4d9229eea38765cf645bcd7550.webp?x-image-process=image/format,png)
(2)追加微信进程id ,执行命令:cycript -p 5409,继续执行命令(注意保持微信在前台运行):[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0],如图
![](https://i-blog.csdnimg.cn/blog_migrate/659f7443cb6c56742a3ee44fde16e1dd.webp?x-image-process=image/format,png)
(3)按快捷键control+D,退出cycript。
(4)拷贝dumpdecrypted.dylib到微信的Documents目录下,dumpdecrypted.dylib在工具库的Crack-file-master目录下。另开启一个终端窗口,执行命令:
scp -P 2222 /Users/fujin/Desktop/逆向/Crack-file-master/crack\ file/dumpdecrypted.dylib root@127.0.0.1:/var/mobile/Containers/Data/Application/3F928AD9-8FE7-4BA0-BDD9-568F101B542F/Documents
运行后输入密码:alpine
![](https://i-blog.csdnimg.cn/blog_migrate/503221560673f6a0746e1f8e1ac45f73.webp?x-image-process=image/format,png)
(5)砸微信的壳,找到之前ssh手机的那个终端窗口,执行命令:
命令1 :cd /var/mobile/Containers/Data/Application/3F928AD9-8FE7-4BA0-BDD9-568F101B542F/Documents/
命令2: DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/C698FCB3-AB86-4E06-BAE2-9765AECA5998/WeChat.app/WeChat(注意:“/var/containers/Bundle/Application/C698FCB3-AB86-4E06-BAE2-9765AECA5998/WeChat.app/WeChat” 这个是之前让记下来的地址!)
![](https://i-blog.csdnimg.cn/blog_migrate/0b34dfa4dca6c3c03a8c9e9d311c7ea1.webp?x-image-process=image/format,png)
(6)蒋砸壳后的文件和微信的安装app拷贝到到Mac上。操作步骤,在另一个终端窗口,执行命令:
1.首先在Mac上建立一个文件夹,名字任意。
2.在终端窗口,执行命令:
(a)scp -P 2222 root@127.0.0.1:/var/mobile/Containers/Data/Application/3F928AD9-8FE7-4BA0-BDD9-568F101B542F/Documents/WeChat.decrypted /Users/fujin/Desktop/逆向/wechat
![](https://i-blog.csdnimg.cn/blog_migrate/f3083a6faa432014b895b170f728814e.webp?x-image-process=image/format,png)
(b)scp -r -P 2222 root@127.0.0.1:/var/containers/Bundle/Application/C698FCB3-AB86-4E06-BAE2-9765AECA5998/WeChat.app /Users/fujin/Desktop/逆向/wechat
![](https://i-blog.csdnimg.cn/blog_migrate/ef0f03b7550d40fca9b17bb71caac389.webp?x-image-process=image/format,png)
(7)导出微信头文件:
1.继续执行命令:cd Theos-Script-master/ 到这个目录下
2.执行命令:./TheosScript.sh ,回车,输入 2 ,回车,然后新建一个文件夹(我的叫头文件),然后按终端窗口的提示拖拽文件,WeChat.decrypted和上面刚建的头文件夹,回车。
![](https://i-blog.csdnimg.cn/blog_migrate/d278f7a2690757e5daea0ce2d74380b7.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/4a926d704436944ccc14aa0498774027.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/cf8318b1455fdaf6d2b13ae66c8bc3d3.webp?x-image-process=image/format,png)
3.成功以后,会在头文件夹内有文件生成:
![](https://i-blog.csdnimg.cn/blog_migrate/6c2da9a2585bae80727bc9bba4e887e2.webp?x-image-process=image/format,png)
(8)hook微信的登陆页的某个按钮的逻辑:
1. 回到刚才ssh成功到手机的终端窗口,手机运行微信,并返回到微信的登陆页,然后终端执行命令:ps aux | grep WeChat (查看微信的进程)
![](https://i-blog.csdnimg.cn/blog_migrate/7646f701b97946894b993721487352bc.webp?x-image-process=image/format,png)
2.执行命令:cycript -p 6416 (注入微信进程)
UIApp.keyWindow.recursiveDescription().toString()(查看当前页view层级)
![](https://i-blog.csdnimg.cn/blog_migrate/cb7a20eda925609241f1f642923c766b.webp?x-image-process=image/format,png)
我们可以随机的选取一个节点不要太靠树叶,也不要太靠树根,例如我选的是标红的部分,把这个节点的内存地址copy出来,这个内存地址,就代表了这个节点的view对象,ios开发的老油条们都知道,通过view的nextResponder方法,可以找出它所属的视图控制器ViewController,所以我么在cycript的控制台中持续输入如下的命令:
![](https://i-blog.csdnimg.cn/blog_migrate/bb31b1d81491ce45cadd8687a599f1bd.webp?x-image-process=image/format,png)
结果发现,登陆页是WCAccountLoginFirstViewController这个控制器。
3.在header文件夹内找到WCAccountLoginFirstViewController.h文件,发现有个函数叫- (void)onChangeLanguage;我们准备hook这个函数。现在使用Logify,它是theos的一个模块,作用就是根据头文件自动生成tweak,生成的tweak会在头文件的所有方法中注入NSLog来 打印方法的入参和出参,非常适合追踪方法的调用和数据传递。
在pc端的终端窗口执行命令:/opt/theos/bin/logify.pl /Users/fujin/Desktop/逆 向/weixin/header/WCAccountLoginFirstViewController.h >Tweak.xm,然后修改Tweak.xm内容,成下图这样(其实就是内部加了alert对话框).
![](https://i-blog.csdnimg.cn/blog_migrate/c6d8187dd95c36da9ef3a67c3fd8b504.webp?x-image-process=image/format,png)
4.创建theos项目:
我们进入终端,然后cd进入你要放工程的文件夹目录比如桌面上我新建好的一个文件夹“逆向”,然后执行启动 NIC(New Instance Creator)。如下:
![](https://i-blog.csdnimg.cn/blog_migrate/faf7fd6c2cd5f3855cc47d116d989d8f.webp?x-image-process=image/format,png)
我们可以看到iphone/tweak,所以我们输入 11 选择一个tweak工程,然后回车确定后,会让我们输入一些名字 id 等等信息,如图:
![](https://i-blog.csdnimg.cn/blog_migrate/f5a3a6cd6c96b5f2a5af67c19ae91bdc.webp?x-image-process=image/format,png)
注意,要被hook的app的bundleId,也就是微信app的bundleId,可以在咱们导出来的WeChat.app的里面找到info.plist,查看bundleId。创建成功以后:
![](https://i-blog.csdnimg.cn/blog_migrate/4c2fa18f6d98f3c2b3619e8c6b744ee1.webp?x-image-process=image/format,png)
然把上一步生成的Tweak.xm和这里的Tweak.xm进行替换。
接下来修改Makefile文件内容跟下图一样:
![](https://i-blog.csdnimg.cn/blog_migrate/0283208a0186719519df9e46c7a6fc6e.webp?x-image-process=image/format,png)
最后打包运行,执行命令:cd 到wachatapp目录下,
export THEOS=/opt/theos,
make package install (期间会提示输入两次ssh密码:alpine)
![](https://i-blog.csdnimg.cn/blog_migrate/294b5da123c6ce7432a39905363b1f46.webp?x-image-process=image/format,png)
运行以后,手机会自动重启,打开微信,进入到登陆页,点击右上角的切换语言(简体中文)按钮,会弹出alert提示框,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/434cf56aba356ee0d85269198c624e88.webp?x-image-process=image/format,png)
这个alert弹出框,就是Tweak.xm文件里写的内容!
那本章的内容就结束了,主要了解一下,大致的逆向的流程,下一篇(ios逆向傻瓜入门教程(二)),会讲一下把逆向的程序,打成ipa包,便于发布