SDGB从解包到运行

2150 字
11 分钟
SDGB从解包到运行

本教程适用于将 SDGB 解包并在你的 windows 电脑及手台上游玩

文章中内容大部分由作者在尝试SDGB解包时于互联网搜集整理得到,苦于网络上大部分教程落时,且较为混乱,故作此教程。 特别注明:大部分资源非本人制作,仅进行转载。

在开始之前#

你需要知道的:

app分类:

app按名字对应了不同版本的游戏
* SDEZ: maimai でらっくす (日服)
* SDGB: 舞萌 DX (国服)
* SDGA: maimai DX (国际服)
一些更新 app 需要依赖本体 app 才能获取内容,所以在开始前请确保 app 文件齐全。

本教程不提供 app 及 opt,如有需要请自行寻找。

.APP 解包#

vhd提取#

[ ]内的部分表示可选项,如果没有直接忽略即可。

首先创建一个文件夹用作解包和运行的文件夹(下文称为 /workdir ),将 .APP 文件以及 unsegaREBORN.exe 复制到其中。

在该目录下打开cmd/powershell,输入下面的命令后看见 Internal VHD extraction completed successfully 或 Child internal VHD identified, finalizing process. 即为解包完成。

unsegaREBORN.exe <appname0></appname0>.app [<appname1></appname1>.app]

现在你的文件目录应该是这样的:

workdir/
├──<appname0></appname0>/
│ ├── contents
│ └── internal_0.vhd
├── [<appname1></appname1>]/
│ └── [internal_1.vhd]
├── <appname0></appname0>.app
├── <appname0></appname0>.ntfs
├── [<appname1></appname1>.app]
├── [<appname1></appname1>.ntfs]
└── unsegaREBORN.exe

文件提取#

首先在 /workdir下或其他地方新建一个文件夹(下称 /game)用于存放游戏文件。

  • 单 vhd 将 /contents下所有内容移动到 /game。

    没有 /contents ?
    如果没有 /contents 文件夹出现,说明 .APP 并非本体app而是升级app,需自行寻找本体。
  • 多 vhd

    需要将子盘(internal_1.vhd)连接到父盘(internal_0.vhd)才能获取完整内容。

    1. 安装 Hyper-V

      1. 按 Win + R 输入:optionalfeatures 后回车。
      2. 在弹出的 Windows 功能 窗口里,找到 Hyper-V,确保下面两项都勾选:
        • Hyper-V 平台
        • Hyper-V 管理工具
      3. 安装完成后重启电脑。
    2. 链接vhd

      1. 按 Win + R 输入:virtmgmt.msc 后回车。
      2. 在右侧的 操作(Actions) 面板中,点击 编辑磁盘(Edit Disk…) 。
      3. 在弹出的向导中,选择 internal_1.vhd (注意是子盘)。
      4. 选择重新连接父盘 internal_0.vhd。
    3. 提取内容

      双击打开 internal_1.vhd 会出现一个新磁盘,将其中的文件全部拷贝到 /game 下。

现在我们拥有了强大的 unsegareborn,故不再需要如此繁琐的过程

便捷解包#

将你的.app.opt文件全部用 unsegareborn 打开即可。

这将在你的工作目录下生成一个以你 app 包名命名的文件夹。

运行游戏#

Segatools#

显然我们并没有官机硬件,因此需要 Segatools 来提供硬件模拟和游戏加载器。请自行下载 segatools.zip 并解压,只需保留 mai2.zip,将 mai2.zip 解压到 /game/Package 下。

amdaemon 脱壳#

大部分 SEGA 系游戏启动时必须经过 amdaemon.exe,但 amdaemon.exe 带有的壳会阻止 Segatools 调用它,所以必须先把 amdaemon.exe 脱壳。

  1. /workdir 打开终端, 输入

    git clone https://gitdab.com/SEGA/sega.git
  2. 复制 /game/amdaemon.exe/workdir/sega/tools/Crackproof/DecryptCrackproofExe64 下。

  3. 接着输入

    cd ./sega/tools/Crackproof/DecryptCrackproofExe64
    DecryptCrackproofExe64.exe amdaemon.exe

    出现 Write to .\amdaemon.unpack.exe 即为脱壳成功

  4. 脱壳后的程序为 /workdir/sega/tools/Crackproof/DecryptCrackproofExe64/amdaemon.unpack.exe,复制其到 /game/Package,删除原 amdaemon.exe,将复制过去的 amdaemon.unpack.exe 重命名为 amdaemon.exe

现在这种脱壳方式已经无效了,我们采用新的方式 XenonUnpack 这里本文作者没能找到 XenonUnpack 的原作者,故引用了他人的下载渠道。

  1. 我们用 XenonUnpack.exe 打开 amdaemon.exe,等待生成 amdaemon.unpack.exe
  2. 删除原 amdaemon.exe,将 amdaemon.unpack.exe 复制到 /game/package,并重命名为 amdaemon.exe

odd.sys#

目前还有一些文件有壳,但是不需要脱出,可以使用 odd.sys 作辅助解密的内核模块。脱壳其他文件非常麻烦且没有必要,带壳运行显然更为高效。

解压得到 odd.sys 后,放入 /game/Package 下即可。稍后的启动脚本里会包含 odd.sys 的安装与卸载。

MelonLoader#

原生的游戏程序需要打 Mod 才能实现在普通电脑上运行以及连接私服等操作,而 MelonLoader 正是 Unity 游戏的 Mod 加载器。

MelonLoader 可通过 MaiChartManager 直接安装。

只需打开 Microsoft Store 搜索即可直接安装 MaiChatManager。

按如下操作安装 MelonLoader :

  1. 点击 选择游戏目录,选择 /game/Package 后点击启动,会弹出提示。
  2. 关掉提示,点击 Mod 管理,直接点击安装 MelonLoader 即可。

AquaMai#

AquaMai 是开源 Mod,它不仅实现了游戏启动所需要的修补还提供了很多有用的功能。

由于 AquaMai 由于种种原因,对于 SDGB 的支持已经不是很好,故本文作者基于 AquaMai 自制了 AquaMai-for-SDGB

  1. AquaMai-for-SDGB clone 至本地,进行编译
  2. AquaMai.dll 复制进 /game/package/Mods
  3. AquaMai.toml 复制进 /game/package
  4. 关闭 MaiChartManager 窗口重启,观察到 A000 加载出曲目即为成功安装。
  5. 点击 资源目录管理 --> 导入,选择解压出的更新包文件夹添加更新包

启动脚本#

/game/Package 文件夹下新建 start.bat,右键修改,将下方启动脚本填入并保存:

@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
chcp 936 > nul
setlocal EnableDelayedExpansion
cd /d "%~dp0"
echo [INFO] 正在启动。
sc query odd > nul
if !errorlevel! == 1060 (
echo [INFO] odd.sys 未安装,正在进行安装...
copy "%~dp0\odd.sys" "%SystemRoot%\System32\drivers\odd.sys" > nul
sc create odd binPath=System32\drivers\odd.sys type=kernel > nul
if !errorlevel! == 0 (
echo [INFO] odd.sys 安装成功。
) else (
echo [ERROR] odd.sys 安装失败,请检查权限或手动安装。
echo [ERROR] 游戏将无法正常运行。
pause
exit /b 1
)
)
echo [INFO] odd.sys 已安装,正在尝试启动。
sc start odd > nul
set result=!errorlevel!
if !result! == 1056 (
echo [INFO] odd.sys 服务已经启动。
) else (
if !result! == 0 (
echo [INFO] odd.sys 服务启动成功。
) else (
echo [ERROR] odd.sys 服务启动失败,请检查权限或手动启动。
echo [ERROR] 游戏将无法正常运行。
pause
exit /b 1
)
)
echo [INFO] 正在启动 amdaemon.exe。
start /min inject -d -k mai2hook.dll amdaemon.exe -f -c config_common.json config_server.json config_client.json
echo [INFO] 游戏进程已启动。
Sinmai.exe -silent-crashes
echo [INFO] 正在关闭 amdaemon.exe。
taskkill /f /im amdaemon.exe > nul
echo [INFO] 正在关闭 odd.sys 服务。
sc stop odd > nul
sc delete odd > nul
del "%SystemRoot%\System32\drivers\odd.sys" > nul
set result=!errorlevel!
if !result! == 0 (
echo [INFO] odd.sys 服务已停止。
) else (
echo [ERROR] odd.sys 服务停止失败,请手动停止服务。
)
echo [INFO] 进程已结束。
pause
exit /b 0

双击 start.bat ,若看见 Sinmai 的窗口弹出,则已完成。

可能会出现双击后一闪而过且 Sinmai 窗口未出现,你是不是用的 win11?如果是的话,将上述的文件中开头终端提权的命令删除,然后右键以管理员身份运行。

运行配置#

ICF#

游戏需要一个 ICF 文件用于查找每次更新包的信息。通常完整的理科里会含有一个 icf 文件,只需稍作修改便可以正常使用:

  1. 下载 icf-reader

  2. /game/Package 下创建文件夹 /amfs/option/appdata,将 .icf 文件重命名为 ICF1 (没有后缀)后,和 icf-reader 一起复制到 /game/Package/amfs

  3. /game/Package/amfs 下打开终端,输入:

    icf-reader.exe decode ICF1 ICF.json

    得到 json 格式的 ICF 数据。

  4. 打开 ICF.json 编辑,按照获取的更新包依次填入:

    1. "type": "Option",

      通常是 Option,无需修改。

    2. option_id: K114,

      按照获取的更新包名称填入,更新包名称格式为首项为大写字符,后三位为数字。

    3. datetime: 2114-05-14T19:19:10,

      更新包时间。

    4. is_prerelease: false

    一般为 false

  5. 完成后保存

  6. 生成新的 ICF1:

    icf-reader.exe encode ICF.json ICF1

segatools.ini#

SEGATOOLS 详细配置:

本站只提供运行必须的参数和解释, 如果需要更多参数以及详细解释请参考此处

[aime]
enable=1
AimeGen=1
;如果使用MuNet私服
[DNS]
default=play.mumur.net
aimedb=aime.mumur.net
[KeyChip]
; 请一定要填写这个
; 获取方式 https://portal.mumur.net
Enable=1
ID=AXXX-XXXXXXXXXXX
; 请按获取的app填写
GameID=SXXX
; 以下配置一般不需要手动修改
[vfs]
amfs=amfs
option=option
appdata=appdata
[netenv]
enable=1
[io4]
enable=1
test=0x38
service=0x39
coin=0x30
[button]
enable=1
[gpio]
dipsw1=1

mai2.ini#

这是用于指定 segatools 模拟硬件的配置文件。在 /game/Package 下新建该文件,复制下方填入保存即可。

[AM]
Target = 0
DummyLED = 1
DummyChime = 1
DummyTouchPanel = 1
IgnoreError = 1
DummyCodeCamera=1
DummyPhotoCamera=1
QrCameraId=0
[Sound]
Sound8Ch=0
[Debug]
Debug=1
AllOpen=0
AllChara=0
AllCollection=0
MaxTrack=0
SinglePlayerType=1

Aquamai.toml#

这是用于控制 Aquamai 的配置文件,原本需要自行修改,但是现在可以通过 MaiChartManager 操作。

如果上方操作无误,那么此时点击 Mod 管理 即可看见所有的可选项。

最后#

声明#

出于法律角度考量,本教程不会提供连接官服方法,只提供连接私服的方式。

如果你迫切的想要知道官服连接的相关方式以作为学习用途,请参考本博客另一篇文章《数据上传失败,无法反映本次游玩成绩》中服务器校验相关部分。

SDGB从解包到运行
https://blog.rouming-fei.top/posts/sdgb-from-unpacking-to-running/
作者
废江流
发布于
2026-07-27
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
废江流
提灯寻影,灯到影灭。
分类
标签
站点统计
文章
15
分类
4
标签
18
总字数
37,248
运行时长
0
最后活动
0 天前

文章目录