Schwarzer教你破解Cytus2谱面加密
前前言
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设备
配置
- 按这篇文章装好macOS虚拟机与VMWare Tools
- 在macOS上下载并安装xcode
- 在macOS里去iFunbox官网下载iFunbox
- 打开xcode,把你的iOS设备与电脑连接
- 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
没有空格,没有ldid
就brew 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谱面加密相关推荐
- 2020-10-17 教你如何破解猫眼(美团)的加密字体stonefont
教你如何破解猫眼(美团)的加密字体stonefont 今天小编试图去爬取猫眼的电影信息,其中包括评分,票房以及有多少人打分等数据,但当我打开查看猫眼网页的源代码时,发现评分和我们在网页上所看到完全不一 ...
- 教你破解隔壁妹子wifi密码,成功率高达90%
2019独角兽企业重金招聘Python工程师标准>>> 破解wifi密码听起来很复杂,实际上也不是非常的复杂,今天教大家如何破解隔壁妹子的wifi密码. 首先声明:本教程只用于技术交 ...
- ***实战:教你轻松查看QQ空间加密后的好友图片
***实战:教你轻松查看QQ空间加密后的好友图片 S.S.F Simeon 最近听说某情侣将自己的生活照片上传至QQ空间,且进行了加密,却不料被好事者在网上公布,引起哄然大波,由于这些照片中有一些是两 ...
- 破解SQLSERVER存储过程的加密
破解SQLSERVER存储过程的加密 http://download.csdn.net/detail/liujiayu2/8620519
- 破解网易云js加密,爬虫获取网易云评论
破解网易云js加密,爬虫获取网易云评论 抓包 这里是对网页版的网易云音乐进行抓包,分析网络请求,url https://music.163.com/#/song?id=36229055 然后可以发现 ...
- 线上插画培训班有用吗,教你选靠谱的插画课程
线上插画培训班有用吗,教你选靠谱的插画课程,推荐5个靠谱的动漫插画培训课程,各有特色和优势,相信可以给大家一些参考! 一:5个靠谱的动漫插画网课 1.轻微课(五颗星) 主打课程有日系插画.游戏原画.古 ...
- python多线程破解压缩包_我用 Python 破解了同事的加密压缩包!
原标题:我用 Python 破解了同事的加密压缩包! 作者 | 朱小五 又是一杯奶茶. 事情的经过是这样的: 又是奶茶,行吧行吧. 快点开工,争取李大伟回来之前搞定. 李大伟说是6位数字密码 那么我们 ...
- 手把手使用Python教你破解谷歌(Google)人机验证码—上篇
手把手使用Python教你破解谷歌(Google)人机验证码-上篇 众里寻他千百度.蓦然回首,那人却在,灯火阑珊处. /1 前言/ 今天呢,咱们来说一下Google,我们都知道,Google是目前地表 ...
- 手把手教你破解Linux系统root密码——无需任何工具,有手就行
[写作说明]:笔者是Linux学习和爱好者,学习或者工作中总是看到有人忘记root密码不知所措,其实不用慌张,Linux下破解root密码非常简单,今天我就手把手教会大家在Linux下破解root密码 ...
最新文章
- Robotics Research Laboratory
- arch linux 进入黑屏,无法从Arch Linux进入Beaglebone Black
- shell脚本一键安装二进制Apache
- android 图片任意拖拉,android 拖拉图片 Gallery 用SimpleAdater实现
- 怎么彻底卸载趋势杀毒软件
- 【机器学习】支持向量机原理及例题详解
- Google 镜像站
- mysql 页大小_查找最佳页面大小
- removeClass删除类名称
- 20221118-数学函数图像在线工具推荐
- 2020腾讯教育盛典,乐博乐博被评为“年度科技创新教育品牌”
- 基于STM32F103C8T6与ESP8266的物联网智能温度采集与蓝牙OLED数字钟的设计与实现
- 这篇文章帮你避坑,教会你选购内存卡
- 离散数学实验二 真值表
- 临床试验中edc录入_临床试验中EDC(电子数据采集)操作须知
- python turtle 库绘制简单魔法阵
- 怎样删除软件残留在添加或删除程序中的信息?
- 关于 Caused by: org.a.a.e: Subscriber class com.xxx.xxx.activity.MainActivity and its super class
- 由于找不到opencv_world310d.dll,无法继续执行代码。重新安装程序可能会解决此问题。
- python 生意参谋_如何爬取生意参谋数据?是不是违规操作?