需要更多关于ios开发资料的可以加我的iOS交流群714042473:,不管你是小白还是大牛欢迎入驻面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路,微信如下
1.准备工作:
(1)一台越狱手机,并装有以下软件:cycript,openssh
(2)下载工具库,内容列表:
(3)在越狱手机上,从appstore上,下载WeChat(微信)。
(1)打开Mac的终端窗口,运行工具库的USBSSH目录下的tcprelay.py,执行命令:
/Users/fujin/Desktop/USBSSH/tcprelay.py -t 22:2222
(2)另打开一个Mac的终端窗口,执行命令:
ssh root@127.0.0.1 -p 2222
运行后,提示输入密码:alpine(默认密码)
(1)另开启一个Mac终端窗口,cd到Theos-Script-master目录,执行命令:
./TheosScript.sh 回车,运行效果如图,输入 1 回车:
(2)安装完毕后,在终端输入cd /opt/theos,如果有内容说明安装成功 ,如图:
(1)手机运行微信,保持在前台。找到刚才ssh成功的终端窗口,执行命令:ps -e,然后找到微信运行的进程id。
(2)追加微信进程id ,执行命令:cycript -p 5409,继续执行命令(注意保持微信在前台运行):[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0],如图
(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
(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” 这个是之前让记下来的地址!)
(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
(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
(7)导出微信头文件:
1.继续执行命令:cd Theos-Script-master/ 到这个目录下
2.执行命令:./TheosScript.sh ,回车,输入 2 ,回车,然后新建一个文件夹(我的叫头文件),然后按终端窗口的提示拖拽文件,WeChat.decrypted和上面刚建的头文件夹,回车。
3.成功以后,会在头文件夹内有文件生成:
(8)hook微信的登陆页的某个按钮的逻辑:
1. 回到刚才ssh成功到手机的终端窗口,手机运行微信,并返回到微信的登陆页,然后终端执行命令:ps aux | grep WeChat (查看微信的进程)
2.执行命令:cycript -p 6416 (注入微信进程)
UIApp.keyWindow.recursiveDescription().toString()(查看当前页view层级)
我们可以随机的选取一个节点不要太靠树叶,也不要太靠树根,例如我选的是标红的部分,把这个节点的内存地址copy出来,这个内存地址,就代表了这个节点的view对象,ios开发的老油条们都知道,通过view的nextResponder方法,可以找出它所属的视图控制器ViewController,所以我么在cycript的控制台中持续输入如下的命令:
结果发现,登陆页是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对话框).
4.创建theos项目:
我们进入终端,然后cd进入你要放工程的文件夹目录比如桌面上我新建好的一个文件夹“逆向”,然后执行启动 NIC(New Instance Creator)。如下:
我们可以看到iphone/tweak,所以我们输入 11 选择一个tweak工程,然后回车确定后,会让我们输入一些名字 id 等等信息,如图:
注意,要被hook的app的bundleId,也就是微信app的bundleId,可以在咱们导出来的WeChat.app的里面找到info.plist,查看bundleId。创建成功以后:
然把上一步生成的Tweak.xm和这里的Tweak.xm进行替换。
接下来修改Makefile文件内容跟下图一样:
最后打包运行,执行命令:cd 到wachatapp目录下,
export THEOS=/opt/theos,
make package install (期间会提示输入两次ssh密码:alpine)
运行以后,手机会自动重启,打开微信,进入到登陆页,点击右上角的切换语言(简体中文)按钮,会弹出alert提示框,如下图:
这个alert弹出框,就是Tweak.xm文件里写的内容!
那本章的内容就结束了,主要了解一下,大致的逆向的流程,下一篇(ios逆向傻瓜入门教程(二)),需要的可以加我的iOS交流群714042473:,不管你是小白还是大牛欢迎入驻面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路,微信如下
网友评论