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

  • 选择目标
  • 砸壳
  • 基本调试
  • Reveal+确定目标action及target
  • 利用Logos 进行 hook
  • 后续

选择目标

在经过之前的配置,这次有点小改动= 我给小5升级到了10.3.3
本次测试机型:iphone5 32位 10.3.3 不完美越狱
测试目标:QQ

砸壳

手机端下载好QQ后

usb连接到mac上 使用 frida-ios-dump进行砸壳

手机端安装 Frida for 32-bit devices

源地址 https://build.frida.re


注意配置dump中的ip port pass

如果不确定Bundle id 可以参考上一篇文章或者使用接下来的方式

python dump.py -l


如果遇到错误

unable to launch iOS app: The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 1.)

先在手机启动APP 然后再执行下面命令进行dump就可以了

python dump.py com.tencent.mqq


这样就基本dump完了
检查下是否砸壳成功
重命名QQ.ipa=>QQ.zip=>解压进入payload

otool -l QQ | grep crypt


crypt_id=0为砸壳成功

基本调试

创建Monkey Dev

这里可以配置成目标APP的Bundle id 也可以默认

在TargetAPP目录中拖入我们砸壳后的app文件

接着连接手机=>点击启动=>测试能否正常编译=>效果:会出现两个QQ

首次安装需要进入 设置=>通用=>设备管理 点击我们对应的app进行信任授权

这里可能会遇到 点击我们重签名的app出现闪退情况

解决方法:再次编译运行查看调试信息

发现报错

ERROR: Attempted to load Reveal Library twice. Are you trying to load dynamic library with Reveal Framework already linked?


造成原因:创建的项目已经自动集成了
RevealServer.framework和libcycript.dylib,且本机已经安装了reveal_load 。
在网上看到的方法貌似不行:打开bulid setting,搜索other linker ,删除objc reveal
解决方法:选择Release编译,或者删除本地的reveal 即可
这里要注意:如果删除了本地的reveal 记得更新/opt/MonkeyDev/Frameworks 目录下的RevealServer.framework为最新版
获取方法 :

接着重新编译运行 即可正常显示

Reveal+确定目标action及target

因为Monkey dev写入的RevealSever 所以直接打开Reveal就能看到需要调试的app

通过查看视图界面来确定我们要hook的组件

本次目标:登录 按钮

获得了 登录按钮的 地址
通过cycript 连接过去进行调试
具体监听端口可以在这里查看:

cycript -r 192.168.0.22:6666

注意调试时ip port 换成你的目标机ip port(点击wifi info能查看ip)

arget-action模式很简单,就是当某个事件发生时,调用那个对象中的那个方法。如:按下按钮时,调用Controller里边的click方法。“那个对象”就是Target,“那个方法”就是Action,及Controller是Targer,click方法是action。
也可以类比的理解为Targer 是需要调用的方法的类,action就是里面的方法了
一般Target都是Controller,而Action有它自己固有的格式:-(IBAction)click:(id)sender。
例如:在iOS中有一个UIControl类,该类中定义了一个

-(void)addTarget:(id)target action:(SEL) forControlEvents:(UIControlEvents)controlEvents

查看 该UIButton的target

查看 该UIButton的Target-Action

 [#0x40a2e700 allTargets]
[#0x40a2e700 valueForKey:@"targetActions"]
*(#0x4617c000)


这是一个很典型的按钮事件、与上文讲解类型基本一致,
所以到这里我们就能确定 :当点击“登录”按钮时会执行QQLoginViewControlle中的loginButtonClicked

利用Logos 进行 hook

在Logos中的first_app_resignDylib.xm中进行hook编写


具体操作就是 %hook +需要hook的类名
中间写需要hook的方法
我们这里对loginButtonClicked 进行了重写 内容为弹窗提示

%hook QQLoginViewController
- (void) loginButtonClicked {UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示:" message:@"看啥?不可能让你登录的" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];[alert show];
}
%end

ok写好了我们来运行测试一下

成功达到hook 登录的目的~

后续

编译遇到问题

解决方法:
1.shift + cmd + k
2.shift + cmd + Alt + k
3. 打开 “钥匙串访问” => 右键“登录” 锁定=>输入密码
4. xattr -cr <path_to_app_bundle>
例如(xattr -cr ~/Desktop/first_app_resign/first_app_resign)
全部来一遍基本都能解决2333

ios逆向入门笔记-HOOK-QQ登录相关推荐

  1. Qt5学习笔记之QQ登录界面一:制作界面

    目录 概述 步骤 概述 B站发现这个QT教程视频,看了两集感觉讲的不错,上手挺简单.之前也接触过QT,一来是工作中用不到,没有动力.二来看到一堆的函数就头大记不住,什么设置起始坐标.居中.标题等等.没 ...

  2. iOS逆向之反HOOK的基本防护

    iOS逆向之Method Swizzle iOS逆向之fishHook原理探究 iOS逆向之fishHook怎么通过符号找字符串 学习完上面的文章后,深感fishhook之强大,既然fishhook能 ...

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

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

  4. ios逆向入门教程(一)

    1.准备工作: (1)一台越狱手机,并装有以下软件:cycript,openssh (2)下载工具库,内容列表: (3)在越狱手机上,从appstore上,下载WeChat(微信). 2.ssh到手机 ...

  5. 安卓逆向-入门笔记、相关知识点总结及思路

    文章目录 安卓逆向思路: 1.查壳 2.未加固 2.1 工具 2.2方法 3 .第一代加固 3.1 工具 3.2 方法 3.3 材料准备 3.4 实例 补充知识: 一.Android 1.加密原则: ...

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

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

  7. Qt工作笔记-仿QQ登录界面(换肤,切换语言)

    本程序含有资源文件,和QSS,在此博文不在展示. 源码下载地址: https://download.csdn.net/download/qq78442761/10389816 程序运行截图如下: 本程 ...

  8. Qt5学习笔记之QQ登录界面五:切换界面

    这里写目录标题 概述 添加新界面 实现切换 概述 目标:点击登录弹出新界面,新界面可以返回到初始界面.分为两部分实现:添加新界面和实现切换. 添加新界面 1.创建新的UI界面,与之前添加图标相同,在工 ...

  9. Qt5学习笔记之QQ登录界面四:界面布局

    这里写目录标题 概述 步骤 概述 三种布局方式:水平布局.垂直布局.栅格布局. 布局后需要调整,则通过打破布局. 步骤 1.账号.密码两个Label组件进行垂直布局,注册.登录两个Push Butto ...

最新文章

  1. 安装rational rose
  2. 论软件的模块化与架构
  3. CCNP-EIGRP不等价负载均衡
  4. (计算机组成原理题目题型总结)第六章:总线
  5. python替换文件内容_使用python替换文件内容
  6. python操作mysql(一)MySQLdb模块安装和数据库基本操作
  7. 运维必读:避免故障、拒绝背锅的六大原则!
  8. .net导出Excel设置颜色font.ColorIndex 各颜色编号
  9. .11-Vue源码之patch(1)
  10. 有限差分法的基本思想
  11. 浏览器插件:插件推荐
  12. Java自动生成5道100以内的加减法口算题
  13. 7-46 新浪微博热门话题 (30 分)
  14. 将image对象转成BufferedImage
  15. 从零开始的Multi-armed Bandit
  16. redis通配符批量删除keys——del
  17. 逆转ACE《逆转裁判3》中文汉化版发布!
  18. 使用 easyExcel 生成多个 excel 并打包成zip压缩包
  19. Anaconda Navigator启动缓慢
  20. java nio 按行读取_JAVA之NIO按行读写大文件,完美解决中文乱码问题

热门文章

  1. 素因子分解法的优化代码
  2. 2020前端面试题(附带答案)
  3. kurento 日志配置
  4. Ajax使用笔记 - - - 传递input框参数
  5. 计算机处理器显卡,电脑特别卡?别再让CPU显卡背锅了!
  6. 软考|系统集成项目管理工程师好考吗?
  7. Unity 3D 热力图(二)
  8. 艾永亮:宠物医院风云,当商人穿起了白大褂
  9. 【解决】office 2010 无法加载 endnote
  10. java——逻辑运算符