ios逆向傻瓜入门教程(一)

时间:2024-04-14 14:28:19

1.准备工作:

(1)一台越狱手机,并装有以下软件:cycript,openssh

(2)下载工具库,内容列表:

ios逆向傻瓜入门教程(一)

(3)在越狱手机上,从appstore上,下载WeChat(微信)。

2.ssh到手机终端

(1)打开Mac的终端窗口,运行工具库的USBSSH目录下的tcprelay.py,执行命令:

          /Users/fujin/Desktop/USBSSH/tcprelay.py -t 22:2222

ios逆向傻瓜入门教程(一)

(2)另打开一个Mac的终端窗口,执行命令:

         ssh [email protected] -p 2222

        运行后,提示输入密码:alpine(默认密码)

ios逆向傻瓜入门教程(一)

3.安装Theos开发工具:

(1)另开启一个Mac终端窗口,cd到Theos-Script-master目录,执行命令:

       ./TheosScript.sh    回车,运行效果如图,输入 1  回车:

ios逆向傻瓜入门教程(一)
ios逆向傻瓜入门教程(一)

(2)安装完毕后,在终端输入cd /opt/theos,如果有内容说明安装成功 ,如图:

ios逆向傻瓜入门教程(一)

4.砸壳和导出微信头文件:

(1)手机运行微信,保持在前台。找到刚才ssh成功的终端窗口,执行命令:ps -e,然后找到微信运行的进程id。

ios逆向傻瓜入门教程(一)
ios逆向傻瓜入门教程(一)

(2)追加微信进程id ,执行命令:cycript -p 5409,继续执行命令(注意保持微信在前台运行):[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory   inDomains:NSUserDomainMask][0],如图

ios逆向傻瓜入门教程(一)

(3)按快捷键control+D,退出cycript。

(4)拷贝dumpdecrypted.dylib到微信的Documents目录下,dumpdecrypted.dylib在工具库的*****-file-master目录下。另开启一个终端窗口,执行命令:

scp -P 2222 /Users/fujin/Desktop/逆向/*****-file-master/*****\ file/dumpdecrypted.dylib  [email protected]:/var/mobile/Containers/Data/Application/3F928AD9-8FE7-4BA0-BDD9-568F101B542F/Documents

运行后输入密码:alpine

ios逆向傻瓜入门教程(一)

(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” 这个是之前让记下来的地址!)

ios逆向傻瓜入门教程(一)

(6)蒋砸壳后的文件和微信的安装app拷贝到到Mac上。操作步骤,在另一个终端窗口,执行命令:

      1.首先在Mac上建立一个文件夹,名字任意。

      2.在终端窗口,执行命令:

          (a)scp -P 2222 [email protected]:/var/mobile/Containers/Data/Application/3F928AD9-8FE7-4BA0-BDD9-568F101B542F/Documents/WeChat.decrypted /Users/fujin/Desktop/逆向/wechat

ios逆向傻瓜入门教程(一)

        (b)scp -r -P 2222 [email protected]:/var/containers/Bundle/Application/C698FCB3-AB86-4E06-BAE2-9765AECA5998/WeChat.app  /Users/fujin/Desktop/逆向/wechat

ios逆向傻瓜入门教程(一)

(7)导出微信头文件:

    1.继续执行命令:cd Theos-Script-master/ 到这个目录下

    2.执行命令:./TheosScript.sh  ,回车,输入 2 ,回车,然后新建一个文件夹(我的叫头文件),然后按终端窗口的提示拖拽文件,WeChat.decrypted和上面刚建的头文件夹,回车。

ios逆向傻瓜入门教程(一)
ios逆向傻瓜入门教程(一)
ios逆向傻瓜入门教程(一)

  3.成功以后,会在头文件夹内有文件生成:

ios逆向傻瓜入门教程(一)

(8)hook微信的登陆页的某个按钮的逻辑:

    1. 回到刚才ssh成功到手机的终端窗口,手机运行微信,并返回到微信的登陆页,然后终端执行命令:ps aux | grep WeChat (查看微信的进程)

ios逆向傻瓜入门教程(一)

  2.执行命令:cycript -p 6416 (注入微信进程)

                        UIApp.keyWindow.recursiveDescription().toString()(查看当前页view层级)

ios逆向傻瓜入门教程(一)

我们可以随机的选取一个节点不要太靠树叶,也不要太靠树根,例如我选的是标红的部分,把这个节点的内存地址copy出来,这个内存地址,就代表了这个节点的view对象,ios开发的老油条们都知道,通过view的nextResponder方法,可以找出它所属的视图控制器ViewController,所以我么在cycript的控制台中持续输入如下的命令:

ios逆向傻瓜入门教程(一)

结果发现,登陆页是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对话框).

ios逆向傻瓜入门教程(一)

4.创建theos项目:

我们进入终端,然后cd进入你要放工程的文件夹目录比如桌面上我新建好的一个文件夹“逆向”,然后执行启动 NIC(New Instance Creator)。如下:

ios逆向傻瓜入门教程(一)

我们可以看到iphone/tweak,所以我们输入 11 选择一个tweak工程,然后回车确定后,会让我们输入一些名字 id 等等信息,如图:

ios逆向傻瓜入门教程(一)

注意,要被hook的app的bundleId,也就是微信app的bundleId,可以在咱们导出来的WeChat.app的里面找到info.plist,查看bundleId。创建成功以后:

ios逆向傻瓜入门教程(一)

然把上一步生成的Tweak.xm和这里的Tweak.xm进行替换。

接下来修改Makefile文件内容跟下图一样:

ios逆向傻瓜入门教程(一)

最后打包运行,执行命令:cd  到wachatapp目录下,

                                              export THEOS=/opt/theos,

                                              make package install (期间会提示输入两次ssh密码:alpine)

ios逆向傻瓜入门教程(一)

运行以后,手机会自动重启,打开微信,进入到登陆页,点击右上角的切换语言(简体中文)按钮,会弹出alert提示框,如下图:

ios逆向傻瓜入门教程(一)

这个alert弹出框,就是Tweak.xm文件里写的内容!

那本章的内容就结束了,主要了解一下,大致的逆向的流程,下一篇(ios逆向傻瓜入门教程(二)),会讲一下把逆向的程序,打成ipa包,便于发布