热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

越狱调试(23)

越狱环境中Cycript的使用手机安装CycriptUSB链接手机clear-清理手机的终端-需要该插件

越狱环境中Cycript的使用

  1. 手机安装Cycript
  2. USB链接手机
    1. clear -> 清理手机的终端 -> 需要该插件支持adv-cmds
  3. adv-cmds -> 让手机的终端更多命令
  4. ps -A -> 获取手机进程
    1. ps -A | grep WeChat -> 找到WeChat的进程
  5. cycript -p 13379 ->
    1. 13379 -> 程序进程 -> 用ps -A 获取
    2. cycript -p 也可以
    3. ctrl d -> 退出cycript
  6. 导入自定义.cy
    1. cd /usr/lib/cycript0.9/
    2. pwd -> 输出路径
    3. scp -P 12345 ./hank.cy root@localhost:/usr/lib/cycript0.9/
      1. scp -P 12345 ./hank.cy root@localhost:/usr/lib/cycript0.9/com/Logic -> 注意最后的文件夹命名 -> 学习参考
      2. 此时再cycript -p AlipayWallet -> @import hank -> 就可以使用了
    4. cycript -p AlipayWallet
      1. cycript0.9该目录下 -> com/saurik/substrate/MS.cy
      2. @import com.saurik.substrate.MS -> 可正确导入MS文件
      3. 学习别人的文件放置方法 -> 目的防止cycript0.9文件下太多冲突
      4. mkdir Logic -> 创建文件夹
        1. mv hank.cy ./com/Logic/ -> @import com.Logic.hank
        2. 查资料 看cycript的文档怎么一次性导入多个.cy文件

theos

  1. 查看MonkeyDev的Git -> theos -> 安装ldid
    1. sudo git clone –recursive https://github.com/theos/theos.git /opt/theos
      1. –recursive -> 循环安装theos需要的依赖库
      2. 最后的/opt/theos -> 安装位置
    2. ldid -> 签名工具 -> 针对越狱插件的一个签名
      1. codesign -> iOS系统的一个签名工具
  2. echo $THEOS -> 打印./zchrc里的该定义的路径
  3. 主要是使用theos/bin/nic.pl脚本来制作插件
  4. nic.pl

分析支付宝登录密码

  1. 链接手机
  2. ps -A | grep Ali -> 找到支付宝进程
  3. cycript -p AlipayWallet
  4. @import com.Logic.hack
    1. HKCurrentVC()
    2. #0x10xfasdf(上一步获取的VC地址).view.recursiveDescription().toString() -> 打印界面视图 -> 找刚才输入的密码字符串
  5. 找界面中文汉字 -> 新开终端 -> 进入python环境
    1. str = u”登录”
    2. str -> 就找到该字符串对应的编码 -> copy去搜索
  6. 找到该按钮的对象 -> #(按钮对象地址).allTargets
    1. #(按钮对象地址).allControlEvents -> 64 -> touchUpInside
    2. 1 2的6次方 -> 64
      1. 可进入python环境验证 -> 2**5 2的5次方
      2. 2**6 -> 2的6次方 -> 64
      3. exit() -> 退出python环境
  7. [#(按钮对象地址) actionsForTarget: #(上层容器地址 在第6步可以获取) forControlEvent: 64] -> 可以打印出方法名 @[“onNext”]
  8. ctrl d -> 退出cycript环境
  9. dump.cy 支付宝 -> 砸壳支付宝
    1. class-dump -H AlipayWallet -o headers/ -> 导出头文件
    2. Sublime Text -> 打开头文件夹
    3. command shift f -> 对应类名 @interface ALUAccuratePWDView
    4. 找到ALUAccuratePWDView文件 -> 看是否有onNext方法
    5. 根据动静态分析找到可能与密码有关的类 aluLoginBox
    6. 找到该类aluLoginBox -> aluInputBox
  10. /#(ALUAccuratePWDView对象地址)->_loginBox->_passwordInputBox
    1. 上面的->也是命令 -> 可以打印_passwordInputBox的地址
    2. /#(ALUAccuratePWDView对象地址)->_loginBox->_passwordInputBox->_textField -> 打印_textField的对象地址

theos使用

  1. nic.pl -> 15 -> 代表插件

  2. 插件工程设置 -> 此处注意包名称(类似于Build ID)统一都是小写

    越狱调试(23)
    image.png
    1. Bundld filter -> 要附加的进程id(Build ID)
    2. cycript -p AlipayWallet -> APPID -> 拿到Build ID
    3. 最后一项是插件安装之后要杀掉的进程 -> 默认是桌面进程SpringBoard
      1. 此处多写了支付宝AlipayWallet
  3. 上一步生成的文件夹用Sublime Text打开

    1. Makefile的配置

      越狱调试(23)
      image.png
  4. Tweak.x -> Logos语法文件

    越狱调试(23)
    image.png
  5. cd alipaypwddemo/

  6. make -> Makefile有这个文件就可以执行编译

    1. 路径有中文 -> 编译失败 -> 拷贝整个文件到桌面
    2. make -> 报错因为NSLog没有导入Foundtion框架
    3. 导入头文件后 make -> 成功
    4. make package -> 打包
    5. make install
      1. 因为上面有安装成功时有要杀掉进程的,此时按理来说应该杀掉的
    6. 如果hook失败
      1. 检查hook代码
      2. make clean -> 上面的3-6流程
      3. Xcode -> window -> Devices -> Open Console

完整hook代码

此时记得要将Tweak.x -> Tweak.xm

#import %hook ALUAccuratePWDView -(void)onNext{ UIView * v1 = MSHookIvar (self,"_loginBox"); UIView * v2 = MSHookIvar (v1,"_passwordInputBox"); UITextField * pwd = MSHookIvar (v2,"_textField"); NSLog(@"密码是%@",pwd.text); } %end

theos注意点

  • theos跟Xcode有关系的,如果多个Xcode,要指定默认Xcode
  1. xcode-select -p -> 打印默认Xcode路径
  2. xcode-select –switch (路径) -> 指定Xcode

Reveal Loader

Reveal Loader 安装该插件

  1. 链接手机
  2. cd /usr/lib/
  3. cd /Library/
  4. 手机安装Reveal Loader插件(来源BigBoss)
  5. 设置里面开启Reveal的权限
  6. 电脑安装Reveal
    1. help -> Show Reveal Library -> ios
  7. 链接手机
    1. cd /Library/
    2. mkdir RHRevealLoader
  8. 电脑端 scp -P 12345 RevealServer root@localhost:/Library/RHRevealLoader/libReveal.dylib
    1. scp -r -P 12345 RevealServer.framework root@localhost:/Library/Frameworks/RevealServer.framework -> 低版本的用8的命令就行, -r 是针对文件夹的移动方法
    2. rm -rf (文件夹) -> -rf 移出文件夹(包括文件夹里面的文件)

LLDB

发送请求之前, 修改数据

  1. Xcode -> Debug -> Attach to Process
  2. 链接手机查看相应的进程 -> ps -A | grep WeChat
  3. pviews
  4. view debug 都可以

LLDB原理

  1. debugserver
  2. 找到相应的手机版本的镜像文件 -> 双击打开
  3. 镜像文件 -> usr/bin/debugserver
  4. 链接手机
    1. cd /usr/bin/
    2. cd /Developer/usr/bin/
    3. ls -> 可以发现手机里面的debugserver
    4. md5比较手机里的和我们Xcode里的(手机的可以拷贝出来)
    5. scp -P 12345 root@localhost:(pwd路径) ./debugserver
    6. md5比较 -> 一毛毛一样样

debugserver

  1. 端口映射 python tcprelay.py -t 22:12345 12346:12346
  2. 电脑端 lldb -> 进入lldb环境
  3. 进入手机环境 cd /Developer/usr/bin/ -> 手机里找到debugserver -> ./debugserver 运行有启动提示
  4. 手机环境 ps -A | grep WeChat -> 找到微信进程
  5. 手机环境 ./debugserver localhost:12346 -a (进程数字)
  6. 电脑端lldb
    1. process connect connect://localhost:12346
    2. pvc
    3. pviews
    4. c
    5. process interrupt
    6. methods 类名

推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
author-avatar
艺卓显示、巴可投影
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有