1.准备工作:

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

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

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

2.ssh到手机终端

(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(默认密码)

3.安装Theos开发工具:

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

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

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

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

(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文件里写的内容!

作者:小丶悟空
链接:https://www.jianshu.com/p/022ebf85cbc6
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

ios逆向入门教程(一)相关推荐

  1. iOS(一):Swift纯代码模式iOS开发入门教程

    Swift纯代码模式iOS开发入门教程 项目初始化(修改为纯代码项目) 安装第三方库(以`SnapKit`库为例) 桥接OC库(QMUIKit) 封装视图并进行导航跳转 示例:使用 `TangramK ...

  2. ios逆向入门笔记-HOOK-QQ登录

    ios逆向入门笔记-HOOK-QQ登录 选择目标 砸壳 基本调试 Reveal+确定目标action及target 利用Logos 进行 hook 后续 选择目标 在经过之前的配置,这次有点小改动= ...

  3. iOS开发入门教程_iOS开发视频教程

    iOS开发入门教程 (Object-C.网络编程.多线程.蓝牙.二维码.Cocos2D.OpenGL) 适合人群:初级 课时数量:34课时 用到技术:IOS,Object-C,OpenGL,XCode ...

  4. js rsa解密中文乱码_建议收藏 | 最全的 JS 逆向入门教程合集

    点击上方"咸鱼学Python",选择"加为星标" 第一时间关注Python技术干货! 嘿,大家好,截止今天咸鱼零零散散分享爬虫.数据分析基础和 Web 的内容已 ...

  5. 【原创】iOS开发入门教程

    2019独角兽企业重金招聘Python工程师标准>>> 程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 ###写在前面的话 学习iOS应用程序开发已有一段时间,最近 ...

  6. Sagit.Framework For IOS 开发框架入门教程6:网络请求STHttp

    前言: IOS的文章,今天,再来补一篇,Sagit的教程: 虽然感觉IOS的文章没什么观众,还是努力写吧,-_-〜 Sagit 开源地址:https://github.com/cyq1162/Sagi ...

  7. iOS逆向入门实践 — 逆向微信,伪装定位(一)

    原文出处:http://pandara.xyz/2016/08/13/fake_wechat_location/ 我的设备环境: ios9.3.2(越狱) OS X EI 这篇文章,详细介绍了在写一个 ...

  8. iOS逆向入门实践 — 逆向微信,伪装定位(二)

    1. 创建工程 还是跟之前的步骤一致,创建工程,然后配置 Makefile.注意创建工程时名字只能包含数字跟字母. Makefile 上面引入的 FakeWeChatLocationManager.m ...

  9. 安卓逆向入门教程(一)

    初识APK 0x01.什么是APK 概念 APK是AndroidPackage的缩写,即Android安装包(apk).APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到 ...

最新文章

  1. Redis中通过bat获取指定前缀开头的所有键值对并输出保存到文件中
  2. Thinkphp3.23 关联模型relation方法不存在解决方法
  3. android开发 常用技巧
  4. SDRAM控制器设计
  5. 腾讯招.NET要求以下几点,你准备好了吗?
  6. linux/unix下setuid/seteuid/setreuid/setresuid
  7. Android学习笔记---开发与运行(卸载)第一个ANDROID应用--Helloworld
  8. Python 列表 append()函数使用详解
  9. 【软件项目管理】知识点整理
  10. Comparator改写
  11. 携程旅游网与马蜂窝游客记录爬取
  12. 拉普拉斯平滑Laplace Smoothing
  13. 中国平安银行关于软件测试笔试试题(二)
  14. 机房收费系统(二)之下机退卡
  15. 冯诺依曼体系结构(现代计算机的原型)+cpu的两个核心指标
  16. 《和码中文》第一册词组(共25课)
  17. java小数的数据类型_【填空题】Java 中小数默认的数据类型为 ,如果要指定为 类型,要在小数后面加F或f。...
  18. Foxmail 7.2数据迁移,导入旧数据
  19. arcgis建立拓扑验证拓扑
  20. 调试运用(电流标幺化,PWMDAC调试,ARCTAN反正切)

热门文章

  1. Java web速成之jsp
  2. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc1 in position 41694: invalid start byte解决方案
  3. 物联网卡广告机相比传统的广告机有哪些优势?
  4. 刚柔软机器人参数化建模仿真分析--多种案例操作步骤--案例代码分享
  5. 嗅探欺骗之Ettercap局域网攻击
  6. .NET 使用Office生成Word文档
  7. uniapp 卡牌发放教程
  8. yl335b分拣站单元流程图_Yl-335B生产线试题
  9. 怎么提高C++编程的基本功?这才是硬实力
  10. Android AI语音之BNF语法