前前言


Lanotalium(Lanota可视化制谱器)的开发基本上也算完成了,闲的没事,把前些天尝试破解Cytus2谱面校验的过程记录下来,免得以后要用的时候自己都不知道搞过逆向(x

前言


Cytus2 iOS版发布了,立刻拿出来研究一番,il2CppDumper,启动!IDA,启动!
一看Dumper还有了新功能生成DummyDll,dnSpy,启动!

看起来比台湾诺西高到不知道哪里去了,直接加密了谱面,而不是采用校验的方式

一路查找KeyStore来历

查KeyStoreFactory.Create
其中反序列化了一段二进制文件,调用了IKeyStoreExtension.Init,跳转

发现了和string ”ASSET“ 比较了一番

初始化了一个Aes加密和另一个啥玩意,不过不重要,注意到解密谱面的时候

用的就是ASSET这个来寻找加密器,接下来就分析AesEncryptor

构造函数和一个静态解密方法中传递了Key数组,我们寻找一下这个静态函数的调用

发现接口函数实际上也调用了他,所以分析此静态函数就好
猜想解密的时候会调用此函数,我也打算学习一个动态调试,破解由此展开

环境


Windows:
  • VMWare Workstation 12
  • macOS 10.13 High Sierra 镜像
  • 能玩Cytus2的越狱iOS设备

配置


  1. 按这篇文章装好macOS虚拟机与VMWare Tools
  2. 在macOS上下载并安装xcode
  3. 在macOS里去iFunbox官网下载iFunbox
  4. 打开xcode,把你的iOS设备与电脑连接
  5. xcode中 Window-Devices and Simulators 添加你的iOS设备

准备


以下步骤均在macOS中操作

1.usbmuxd

  • 点击下载
  • 打开命令行窗口A(窗口比较多,做个记号)切换到 /usbmuxd-1.0.8/python-client
  • 接着 sudo python ./tcprelay.py -t 22:2222
    这个窗口就可以放着不动了

2.debugserver

  • 打开iFunbox,点击Raw File System
  • /Developer/usr/bin下,把debugserver拖出来
  • 开启新命令行窗口B,切换到debugserver目录
    lipo -thin arm64 debugserver -output debugserver
    (若你是iPhone5/5c等32位设备请把arm64换为armv7s)
  • 新建一个文件,贴入以下文本,命名为ent.xml,放到debugserver旁边
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>com.apple.springboard.debugapplications</key><true/><key>get-task-allow</key><true/><key>task_for_pid-allow</key><true/><key>run-unsigned-code</key><true/>
</dict>
</plist>
  • 接着敲ldid -Sent.xml debugserver,没错,-Sent.xml没有空格,没有ldidbrew install ldid一下,没有brew自己百度装brew(x
  • 再次打开iFunbox,把debugserver复制到iOS设备中的/usr/bin

3.连接

  • 在命令行窗口B,切换到/usbmuxd-1.0.8/python-client输入sudo python ./tcprelay.py -t 12345:12345,也可以放着不动了
  • 开启新命令行窗口C,输入ssh root@localhost -p 2222,SSH连接到iOS设备,密码一般是alpine
  • 输入ps -ef | grep "cytus2"
    记下cytus2的pid
  • 输入debugserver *:12345 --attach pid,此处为1650
  • 你会发现cytus2中断运行了,命令行窗口C也可放着不管了

破解


  • 打开命令行窗口D,敲lldb,回车,发现C,D同时走字,即连接iOS设备上的debugserver成功
  • 打开IDA,运行il2CppDumper提供的导入符号py脚本,定位至AesEncryptor$$_Decrypt
  • 记录下地址0x00000001000C5D74
  • 回到命令行窗口D,键入process connect connect://127.0.0.1:12345,等待连接
  • 显示如图则连接完成
  • 键入image list -o -f,拖到[1]项
  • 记录下模块地址0x00000000000b4000
  • 则实际代码地址为0x00000000000b4000 + 0x00000001000C5D74 = 0x0000000100179D74
  • 在命令行D输入br s -a 0x0000000100179D74下断点
  • 输入c继续cytus2运行,随便进首歌
  • 断点命中!再看看函数形参列表
  • key位于第四项,输入p $x4输出他的地址
  • 并不知道byte[]这个类的结构,先看内存为敬
  • 发现这个16很可疑,因为密钥长度可以为16
  • 再次dump后面的内存
  • 则密钥已呈现在眼前
  • Aes还需要一个IV向量才能解密,返回IDA
  • 经过我对注释位置下断点并单步调试得出设置IV向量的位置
  • 类似方法得到IV向量,发现竟然就是谱面文件5-20字节,这也和调用解密函数的第二个参数offset相吻合,为20

总结


  • 至此Cytus2破解工作已经结束
  • 解密只需用得到的Key,提取谱面5-20字节部分作IV向量,解密21字节及以后的部分,并用UTF8编码读出即可
  • 加密随机得到IV向量,先写入c2cd前缀,再写入IV向量,再写入加密数据即可

声明


  • 破解仅为学习使用,不会用于盗版或商用,用途包含自制导入,谢谢

Schwarzer教你破解Cytus2谱面加密相关推荐

  1. 2020-10-17 教你如何破解猫眼(美团)的加密字体stonefont

    教你如何破解猫眼(美团)的加密字体stonefont 今天小编试图去爬取猫眼的电影信息,其中包括评分,票房以及有多少人打分等数据,但当我打开查看猫眼网页的源代码时,发现评分和我们在网页上所看到完全不一 ...

  2. 教你破解隔壁妹子wifi密码,成功率高达90%

    2019独角兽企业重金招聘Python工程师标准>>> 破解wifi密码听起来很复杂,实际上也不是非常的复杂,今天教大家如何破解隔壁妹子的wifi密码. 首先声明:本教程只用于技术交 ...

  3. ***实战:教你轻松查看QQ空间加密后的好友图片

    ***实战:教你轻松查看QQ空间加密后的好友图片 S.S.F Simeon 最近听说某情侣将自己的生活照片上传至QQ空间,且进行了加密,却不料被好事者在网上公布,引起哄然大波,由于这些照片中有一些是两 ...

  4. 破解SQLSERVER存储过程的加密

    破解SQLSERVER存储过程的加密 http://download.csdn.net/detail/liujiayu2/8620519

  5. 破解网易云js加密,爬虫获取网易云评论

    破解网易云js加密,爬虫获取网易云评论 抓包 这里是对网页版的网易云音乐进行抓包,分析网络请求,url https://music.163.com/#/song?id=36229055 然后可以发现 ...

  6. 线上插画培训班有用吗,教你选靠谱的插画课程

    线上插画培训班有用吗,教你选靠谱的插画课程,推荐5个靠谱的动漫插画培训课程,各有特色和优势,相信可以给大家一些参考! 一:5个靠谱的动漫插画网课 1.轻微课(五颗星) 主打课程有日系插画.游戏原画.古 ...

  7. python多线程破解压缩包_我用 Python 破解了同事的加密压缩包!

    原标题:我用 Python 破解了同事的加密压缩包! 作者 | 朱小五 又是一杯奶茶. 事情的经过是这样的: 又是奶茶,行吧行吧. 快点开工,争取李大伟回来之前搞定. 李大伟说是6位数字密码 那么我们 ...

  8. 手把手使用Python教你破解谷歌(Google)人机验证码—上篇

    手把手使用Python教你破解谷歌(Google)人机验证码-上篇 众里寻他千百度.蓦然回首,那人却在,灯火阑珊处. /1 前言/ 今天呢,咱们来说一下Google,我们都知道,Google是目前地表 ...

  9. 手把手教你破解Linux系统root密码——无需任何工具,有手就行

    [写作说明]:笔者是Linux学习和爱好者,学习或者工作中总是看到有人忘记root密码不知所措,其实不用慌张,Linux下破解root密码非常简单,今天我就手把手教会大家在Linux下破解root密码 ...

最新文章

  1. Robotics Research Laboratory
  2. arch linux 进入黑屏,无法从Arch Linux进入Beaglebone Black
  3. shell脚本一键安装二进制Apache
  4. android 图片任意拖拉,android 拖拉图片 Gallery 用SimpleAdater实现
  5. 怎么彻底卸载趋势杀毒软件
  6. 【机器学习】支持向量机原理及例题详解
  7. Google 镜像站
  8. mysql 页大小_查找最佳页面大小
  9. removeClass删除类名称
  10. 20221118-数学函数图像在线工具推荐
  11. 2020腾讯教育盛典,乐博乐博被评为“年度科技创新教育品牌”
  12. 基于STM32F103C8T6与ESP8266的物联网智能温度采集与蓝牙OLED数字钟的设计与实现
  13. 这篇文章帮你避坑,教会你选购内存卡
  14. 离散数学实验二 真值表
  15. 临床试验中edc录入_临床试验中EDC(电子数据采集)操作须知
  16. python turtle 库绘制简单魔法阵
  17. 怎样删除软件残留在添加或删除程序中的信息?
  18. 关于 Caused by: org.a.a.e: Subscriber class com.xxx.xxx.activity.MainActivity and its super class
  19. 由于找不到opencv_world310d.dll,无法继续执行代码。重新安装程序可能会解决此问题。
  20. python 生意参谋_如何爬取生意参谋数据?是不是违规操作?

热门文章

  1. Ubuntu Linux 锐捷 ruijie 认证成功 校园网 西电 老校区 新校区
  2. 融合收敛因子和樽海鞘群的蝴蝶优化算法
  3. POJ 3666 dp
  4. Centos8网口聚合
  5. echarts的圆饼图自定义颜色
  6. 什么是Redis持久化
  7. win10 IE11卸载了怎么重装
  8. STM8L相关功能配置
  9. VMware虚拟机连不上移动硬盘或USB
  10. 学前教育计算机课程内容,学前教育专业《计算机基础教学大纲》