越狱调试(23)

简介: 越狱环境中Cycript的使用

越狱环境中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系统的一个签名工具


  1. echo $THEOS -> 打印./zchrc里的该定义的路径
  2. 主要是使用theos/bin/nic.pl脚本来制作插件
  3. 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 << 6 位 -> 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 -> 代表插件


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


微信图片_20220510002718.png

image.png

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


   1.Makefile的配置


微信图片_20220510002724.png
image.png


  1. Tweak.x -> Logos语法文件


微信图片_20220510002728.png
image.png

  1. cd alipaypwddemo/


  1. 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 <UIKit/UIKit.h>
%hook ALUAccuratePWDView 
-(void)onNext{
    UIView * v1 = MSHookIvar <UIView *>(self,"_loginBox");
    UIView * v2 = MSHookIvar <UIView *>(v1,"_passwordInputBox");
    UITextField * pwd = MSHookIvar <UITextField *>(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 类名




目录
相关文章
|
开发工具 iOS开发
iOS 支付宝SDK比较隐秘的坑
iOS 支付宝SDK比较隐秘的坑
155 0
|
安全 Shell Android开发
使用Drozer安卓调试手册
使用Drozer安卓调试手册
使用Drozer安卓调试手册
iOS14模拟器报错问题真机可以运行
iOS14模拟器报错问题真机可以运行
230 0
iOS14模拟器报错问题真机可以运行
|
数据安全/隐私保护
手机调试工具插件
手机调试工具插件
152 0
手机调试工具插件
|
网络协议 Shell 网络安全
越狱(21)
OpenSSH设置
401 0
越狱(21)
|
安全 iOS开发 Windows
黑客发布iOS 4.1永久越狱程序
据国外媒体报道,著名黑客Geohot本周六提前两天发布了iOS越狱软件LimeRa1n的RC版(最终预览版),支持系统版本在4.0到4.1 之间的iPhone 3GS、 iPod Touch三代、iPad、iPhone 4和iPod touch四代。
844 0
让手机的应用变得可调试
前言:不管你是不是想做反编译或者做安全,就是一般的安卓开发者,如果修改了这个属性,那么即使是生产版的app在关闭了调试的条件下都可以调试自己的应用,可以说这个属性非常有用 准备工作 1.
1249 0
|
iOS开发
iOS越狱包 重签名
重签名目的:越狱包重签名运行到非越狱手机进行调试。 手动重签名大体步骤(以墨迹天气app 为例子): 1.删除插件Plugins文件夹以及里面的内容。 2.
2389 0