记一次某八按键音游的逆向

1015 字
5 分钟
记一次某八按键音游的逆向

前言#

兄弟炒币赚了大钱,买了ADX放家里

由于兄弟几个都很变态(当然不包括我),就想到是不是可以买个郊狼回来玩玩

当然不是电那种奇怪的地方(),只是电大腿之类的

我的提议就是,Miss一次电一次

开始#

逆向基于的版本是DX-1.56

也就是Prism Plus

当然了,游戏文件我是不会提供的(不过这玩意已经满天飞了吧)

因为我没接触过Unity逆向,第一想法是用Frida去hook,当然是可以的

但是我的游戏是打过mod的,也就是AquaMai

既然现成的Mod我们去看看他的实现思路不是更好

说白了AquaMai的方法就是用MelonLoader注入他的Dll,看代码很容易得知他用的是HarmonyPatch这个框架

一搜不得了,这就是给Unity专用的,而且用起来简单的不得了

确定好框架就可以开始逆向了

很显然,我们需要知道Miss判定的函数,然后Hook他 当执行Miss函数的时候进行某些行为(比如WebSocket给那玩意开电)

众所周知,这游戏是Unity写的,它的核心逻辑都在Assembly-CSharp.dll里面

把这个Dll丢进dnSpy里面

我这里假设你的Assembly-CSharp.dll已经脱壳了

应该吧?不会有人动态解密跑这个吧 不然还hook个蛋

 2025-06-08 215638.png
2025-06-08 215638.png

我一看 类名全都没混淆 简直是天堂

这就是Unity的魅力吗()

首先想法肯定是搜Miss

 2025-06-08 220033.png
2025-06-08 220033.png

有点多啊

全词匹配看看

 2025-06-08 220157.png
2025-06-08 220157.png

这次少了很多

我们看到左边有个Note.Judge

是他吗,点进去看看

 2025-06-09 015538.png
2025-06-09 015538.png

不难发现这是一个枚举?Miss的时候=0分吗

对着他的调用一顿分析

看到有一堆东西调用了这个枚举

挨个进去看他们在相互调用

 2025-06-09 020037.png
2025-06-09 020037.png

一个个进去看,都没找到当miss了调用的逻辑在哪里

我猜这可能是个将判定的时间转换成最终判定的方法,这个枚举就是给转换用的

那不几把是我们要的,尽管可以继续分析 但这样对一个没有混淆的Dll有点太麻烦了

我们接着看Miss的关键词

我们看到有一个NoteJudge.Judgebox里面的玩意

 2025-06-09 020601.png
2025-06-09 020601.png

一看这个枚举调用可多了

 2025-06-09 020829.png
2025-06-09 020829.png

前面的那堆是Debug类的,应该不是我们需要的

我认为我们要找的东西应该是在NoteMananger之类的东西里面

然后我在这堆调用中一眼相中了我的目标

 2025-06-09 021159.png
2025-06-09 021159.png

这里很显然是一个switch语句通过判断Note的类型来赋予对应的DX分

他在Manager类里,和我想得差不多

而且Miss了DX分就是不加的,我觉得没毛病

那就试试吧,理论来说我们当然可以直接反编译这个Dll重新编译

但那样显然不咋健康,侵入性太强了

那反正我们都有Mod,写一个Dll不是更好?

赶紧去看看MelonLoader的文档

哇它里面还内置了HarmonyPatch

无敌了

核心实现就是以下的代码了

[HarmonyPatch(typeof(JudgeResultSt), nameof(JudgeResultSt.UpdateScore))]
public static class UpdateScorePatch
{
static void Postfix(ref JudgeResultSt __instance)
{
// 如果 DX分为0,视为 Miss
if (__instance.Deluxe == 0)
{
/// 在后台线程发请求,防止主线程卡顿
ThreadPool.QueueUserWorkItem(_ =>
{
MelonLogger.Msg("检测到 Miss,发送电击请求...");
MissDetected();
});
}
}
}

效果如下

雷电法王

IMG_8724_20250609-023014_.PNG
IMG_8724_20250609-023014_.PNG

这里用了多线程,把MissDeteced这个函数换成你需要执行的东西就好

编译了放进Mods文件夹,没啥毛病就收工了

具体详细用WebSocket调用郊狼的代码稍后写完我应该会丢到Github

应该不会有人用到这玩意吧 不要吧

结尾#

下次试试mu3的逆向

chusan不是Unity 那个缓一缓

我还记得因为和某人争论chusan是不是Unity还吵过

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

记一次某八按键音游的逆向
https://cainongw.github.io/posts/sinmai-reverse/
作者
Cainong
发布于
2025-06-08
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
记一次Chunithm的逆向
逆向 前言 之前写过一篇关于中二的逆向,但是没什么成果,加上我确实没什么逆向的能力,所以删掉重新研究了一下 这次目标依然是实现AutoPlay,得益于Agent的发展,现在我们可以让Agent直接去访问IDA MCP来逆向,我们就不用啃反编译出来的狗屎了
2
Unity游戏逆向与mod开发:与你共享Lo-Fi故事(2) Todo同步
逆向 前言 我大概是写完了那个同步SMTC的mod,接下来就是用DOTween加动效还有一些细节修改就好了 那么我要实现我第二个目标了,就是Todo的同步
3
Unity游戏逆向与mod开发:与你共享Lo-Fi故事(1)
逆向 前言 看Steam家庭共享库的时候发现个这个游戏 基本上就是一个番茄钟+音乐+ToDo List的游戏&工具 顺便放了一个少女陪你干活 做的还是很精致的 我也很喜欢 Mod已经写完了 是一个同步音乐信息到游戏的mod 感兴趣的可以下下来看看 ChillMusicInformationSyncMod
4
VoiceMeeter的逆向与破解
逆向 前言 如果您看到了这,您需要知道的: 我不是专业的逆向人员,一定会有错误,遗漏的地方,您可以联系我指正或交流 其次,这不是教程,您需要有一定的逆向基础 疫情期间,由于 每天上课摸鱼 ,大部分时间都和朋友在语音 我便需要一些整活神器,来在与语音里 爆破我的朋友 我想起几年前发现的神器——VoiceMeter
5
记一次从 Hexo Blog 到 Astro Firefly Blog 的迁移
前端 Hexo 目前还是不怎么够我用,一个是 JavaScript 并不是很好写(相较于Astro 而言。一个就是 Hexo 的主题和生态确实远远比不上新的基于 Astro Svelte这些前端框架,因此我决定迁移
随机文章 随机推荐
Profile Image of the Author
Cainong
Caiw there 👋
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
站点统计
文章
38
分类
16
标签
48
总字数
57,650
运行时长
0
最后活动
0 天前

文章目录