求魔物娘TD解包教學

原本想說看遊戲是用UNITY去建構的
想說用AssetStudio直接把遊戲文件夾丟進去解析看看
(用的是DMMPLAYER下載的,全年齡和X版都試過)

是有看到一些文件,像是道具、介面圖標、部分背景和角色SD小人的圖樣
但就是沒有看到其他CG、背景圖和角色的立繪

後來自己測試後發現,不知道是不是有加密過
要讓CG至少讀取過一次才能透過Caches讓他讀出來,但有些已經打不開的活動背景圖會因為這樣抓不到,而且一個一個點好麻煩==
(甚至快取也只能抓去LIVE2D的貼圖檔案,但立繪還是沒有出來)

有沒有什麼方法可以一次解出來,能包括立繪+背景+CG最好@@

游戏启动时会请求一个ablist(所有资源的地址列表),自己拼接一下全部下下来就行

是用fildder找嗎 ?
我有點不太懂這部分的操作,有看到assets.game-monmusu-td.net:443 這個位址
但好像又不是這個

研究了2天搞定
正在寫教程
和上傳懶人包 : )

全部AB包先給你
assets.game-monmusu-td.net_asset_20240905.rar (13.6GB)

使用Asset Studio抽出資源後懶人包(Spine文件 PNG圖像已調整過分辨率)
assets.game-monmusu-td.net_20240905.rar (15.0GB)

1 个赞

是的,不过这也是个页游,你在浏览器里开控制台也能看到请求了

import httpx

BASE_URL = 'https://assets.game-monmusu-td.net/assetbundles'
client = httpx.Client()


def get_ablist():
    resp = client.post(
        'https://gapi.game-monmusu-td.net/api/asset_bundle/version',
        json={"cvr": "114514", "provider": "dmm"}
    ).raise_for_status()
    version = resp.json()['data']['version']
    print(f'AssetBundle Version: {version}')
    ablist_url = f'{BASE_URL}/ver_{version}/webgl_r18/ablist.json'
    return client.get(ablist_url).json()


def get_url_list():
    ablist = get_ablist()
    cdn = f'{BASE_URL}/ver_{ablist["baseVersion"]}/webgl_r18'
    url_list = [
        f'{cdn}/{asset["hash"]}{asset["path"]}'
        for asset in ablist['data']
    ]
    return url_list


def main():
    urls = get_url_list()
    print(urls)


if __name__ == '__main__':
    main()
1 个赞



遊戲資源列表清單解析取得詳情

VPN + Google Chrome 進入遊戲後
使用Fiddler可得到遊戲資源包文件清單ablist.json (8.01MB)

https://assets.game-monmusu-td.net/assetbundles/ver_0bdb2d72a9/webgl_r18/ablist.json
ablist.rar (2.6 MB)

ablist.json 使用EmEditor開啟後長長一條文字
需要做一下排版

先安裝Google Chrome外掛程式(插件) Json Viewer

Json Viewer安裝完畢後使用Google Chrome開啟ablist.json
ablist.json拖到Google Chrome網址列上面,然後按下enter即可開啟json文件

勾選左上角的"美化排版"
json文件排版會變得比較直觀一點(分行排版)

然後全選複製到新的文本文件(ablist.txt)
ablist.rar (5.2 MB)

遊戲資源包下載清單製作詳情

由Fiddler解析遊戲數據包路徑可知
https://assets.game-monmusu-td.net/assetbundles/ver_10004/webgl_r18/c1a8bd6fe98ec4df4275ac63451ed536857a708cf90a7e8371a786438c997343.bytes

地址格式
https://assets.game-monmusu-td.net/assetbundles/ver_10004/webgl_r18/ + {64位數hash值} .bytes

一開始我想太複雜了 , 以為是AB包文件名做int32處理
昨天無聊把hash(32位數)和path(32位數)排列組合嘗試下載
最後確定原來那麼單純
hash(32位數) + path(32位數) 湊成64位數就好
https://assets.game-monmusu-td.net/assetbundles/ver_10004/webgl_r18/ + hash(32位數) + path(32位數).bytes
ablist.json 文件裡剛好都有這些訊息

EmEditor 搜尋(S) —> 尋找(F) —> 輸入 “hash” —> 抽出(T)
會自動抽出有"hash" 字串的所有行
後面的", 可以直接利用取代為空白字符 , 批次消除
然後另存文本文件hash.txt(共50466行)
hash.rar (1.7 MB)








接著使用EmEditor抽出ablist.txt文檔裡面特定的字串
EmEditor 搜尋(S) —> 尋找(F) —> 輸入 “path” —> 抽出(T)
會自動抽出有"path" 字串的所有行(共50466行)
bytes後面的", 可以直接利用取代為空白字符 , 批次消除
然後另存文本文件path.txt
path.rar (2.0 MB)





我這邊使用土法煉鋼
使用EXCEL將https://assets.game-monmusu-td.net/assetbundles/ver_10004/webgl_r18/ + hash(32位數) + path(32位數).bytes拼湊起來
EXCEL C1欄位貼上https://assets.game-monmusu-td.net/assetbundles/ver_10004/webgl_r18/ (複製到C50466)
EXCEL D1欄位貼上hash.txt 共50466行的內容
EXCEL E1欄位貼上path.txt 共50466行的內容
EXCEL A1欄位輸入=C1&D1&E1
EXCEL A2到A50466通通複製A1的公式
A1到A50466就是遊戲資源包完整的URL
將A1到A50466欄位URL全選複製貼上到新的文本文件
另存為20240904_monmusu-td_asset_bundle_url.txt
20240904_monmusu-td_asset_bundle_url.rar (2.0 MB)

使用wget下載遊戲資源包url清單
wget_asset_bundle_url.rar (3.8 MB)

R:/wget/wget -i 20240904_monmusu-td_asset_bundle_url.txt -c -r -P ./dmm2
(wget.exe所在位置 + url文件 + wget下載參數 + 存放的目錄)
wget.exe所在位置和存放的目錄可自行更改

AB包全部下載完共50463個文件(13.2GB)(有3個不在server上)
全部都是.bytes文件 , 其實就是AB包文件(Asset Bundle) , 沒加密可直接開啟
使用Raz版Asset Studio直接全選開啟50463個AB包文件



遊戲資源包下載清單製作截圖詳情





















Asset Studio輸出設定詳情

Asset Studio輸出設定
Options (選項) ---->
Export options (輸出選項) ---->
Group exported assets by (分組輸出材質方式) —> container path (內容路徑)
效果 : 輸出的文件會依照原AB內的路徑自動生成分類目錄 , 文件比較美觀 , 不會都擠在同一個目錄內

Asset Studio輸出類別設定
第1次輸出AudioClip(音頻) , Font(字型) , TextAsset(文檔) , Texture2D(圖像)
輸出目錄 : asset-1
第2次輸出Sprite(圖像)
輸出目錄 : asset-2






一開始回覆樓主的懶人包少放了Sprite(圖像)
所以我又重新打包新的懶人包
assets.game-monmusu-td.net_20240905_fix.rar (16.6GB)
樓主要的資源都在懶人包裡面(不用玩遍整個遊戲)(包括無法看到的資料)

Spine文件在TextAsset(文檔) , Texture2D(圖像)裡面
\asset-1\advscene\resources\advscene\texture\character\chr_poses (角色全身spine)
\asset-1\advscene\resources\advscene\texture\character\r18_scenes (色色spine)
\asset-1\resources\character\ (角色戰鬥SD小人)
其他類別圖像和角色語音都在懶人包裡面

Spine 文件後綴修改詳情

看完所有目錄Spine文件後
Spine文件後綴需要修改
2024-09-05_070430
2024-09-05_070447

(1) .atlas.prefab 改成 .atlas
(2) .skel.prefab 改成 .skel
(3) .atlas.asset 改成 .atlas
(4) .prefab 改成 . json
先做(1) (2) (3) 最後做(4)
所以(1) (2) (3) 直接將2個後綴看在一起修改

bat批次代碼 (bat文件放在最外圍目錄下\asset-1\ 運行即可一次修改後綴)
修改子目錄副檔名.rar (766 字节)


forfiles /s /m *atlas.prefab /c “cmd /c rename @file @fname
forfiles /s /m *skel.prefab /c “cmd /c rename @file @fname
forfiles /s /m *atlas.asset /c “cmd /c rename @file @fname
forfiles /s /m *prefab /c “cmd /c rename @file @fname.json

Spine PNG圖像分辨率修改詳情

Spine PNG圖像實際分辨率有些與atlas文件內記載的分辨率不一致
看了一下
\asset-1\advscene\resources\advscene\texture\character\chr_poses (不用更改)
\asset-1\advscene\resources\advscene\texture\character\r18_scenes (全部要更改)
\asset-1\resources\character (部分要更改)
\asset-1\resources\effects (不用更改)
\asset-1\resources\missile (不用更改)
\asset-1\resources\ui (全部要更改)

方法1 : 土法煉鋼 , 使用XnView手動修改調整PNG圖像分辨率
方法2 : 使用yjzyl9008大佬提供的python腳本
方法3 : 購買愛發電奇怪的魚的寫的腳本

一開始用方法1 , 後來用方法3
但奇怪的魚腳本輸出的圖這次有白邊


試了一下yjzyl9008大佬提供的python腳本
無黑邊無白邊 , 效果不錯

一開始遇到UnicodeDecoderError : ‘cp950’ codec can’t decode 問題
上網查了一下找到方法
yjzyl9008大佬提供的python腳本內
open()函式內加上encoding=“utf-8”
運行腳本後就無錯誤訊息了
不需要更改分辨率的圖腳本會自動略過






PNG圖像分辨率修改腳本
python腳本我另存為png_resize.py
png_resize.rar (2.5 KB)

C:\Windows\System32\cmd.exe 複製一份
這樣做的話運行cmd.exe時
cmd起始路徑會隨你當前所在目錄變動

cmd.exe和py腳本放在一起
cmd 命令 : python png_resize.py
自動開始調整PNG圖像分辨率



環境變數設定詳情

這邊的論壇帖子你有看到大佬貼上代碼的話
大多是python腳本
代碼內容全選複製貼到新的文本文件(.txt)
存檔後(.txt)更改後綴為(.py)
要運行.py文件的話
py文件需要安裝python
https://www.python.org/ftp/python/3.12.5/python-3.12.5-amd64.exe

安裝python時
自動添加於環境變數的選項要勾選
Add python.ext to PATH
這邊你的python要設定好環境變數才能執行
教學網址 : Python:安裝 python 並且添加環境變數 - HackMD

若當初安裝忘了勾選 (Add python.ext to PATH)
cmd命令就無法直接使用"python"這一個單詞
cmd輸入python命令沒反應時
方法 1 : 重新安裝python , 安裝時勾選 (Add python.ext to PATH)
2024-07-04_182915x

方法 2 : 手動環境變數設定
我的電腦 —> 內容 —> 進階系統設定 → 環境變數
看下面欄位 ----> 系統變數(S) —> 找到Path —> 編輯
新增路徑 C:\Users\你的電腦名稱\AppData\Local\Programs\Python\Python311
新增路徑 C:\Users\你的電腦名稱\AppData\Local\Programs\Python\Python311\Scripts

環境變數設定就是告訴windows
當輸入cmd內建以外的命令時
windows可以藉由手動設定的程序路徑
去找到要運行的程序

比如ffmpeg這個命令
ffmpeg程序若放在C:\ffmpeg內
運行程序時
cmd直接輸入ffmpeg會沒反應 (因為不是內建的命令)
需要輸入C:\ffmpeg\ffmeg (要加上程序完整的路徑才有反應)
windows手動設定環境變數添加程序路徑C:\ffmpeg
之後cmd就可以省略輸入程序路徑 , 直接輸入程序名就好
通常安裝程序都會幫你設定環境變數

遊戲角色Spine版本為3.8.79 (skel & json)
使用skeletonViewer-3.8.99.jar開啟即可



懶人包

懶人包載點詳情

遊戲原始AB包
assets.game-monmusu-td.net_asset_20240905.rar (13.6GB)

Google Drive載點

Mega.nz載點

百度盤載點

提取码: 1234

使用Asset Studio抽出資源後懶人包(Spine文件 PNG圖像已調整過分辨率) (補上Sprite圖像)
assets.game-monmusu-td.net_20240905_fix.rar (16.6GB)

Google Drive載點

Mega.nz載點
上傳中

百度盤載點

提取码: 1234

相關工具

1 个赞

補充一個類似Fiddler的抓包國產工具
抓包程序名 : Sunny网络中间件

我覺得比Fiddler方便多了
設置簡單
解包迅速

運行SunnyNet.exe

(1) 點選左上角齒輪圖示
(2) 點選SSL証書
(3) 勾選默認証書
(4) 點擊默認証書
(5) 點擊左下角 設置系統IE代理
(6) 點擊完設置系統IE代理後自動開始抓包




DMM + Google
DMM + IE
都可以正常抓包


不使用軟件時
記得先關掉"設置系統IE代理"
再關閉程序
以免無法上網 : )

謝謝大佬的詳細教學 我會去自己操作一次 辛苦你的研究和步驟解析 !

有沒有辦法修復紅色的,因為我發現了經過審查的那個?

原PNG圖檔的屌就是一塊紅色
只能自己修圖了 : )

如何編輯 skel 檔案?我想刪除 draw order

马赛克的插槽,找个别的spine viewer隐藏掉就好了,这玩意儿是游戏中加的一层码

用Sunny网络中间件没能抓到ablist.json


请问怎么操作

結合樓上二位的意見
找到一個非破壞性的修改方法(不刪除物件的方式)
魔物娘TD Spine版本為3.8.79
剛好可以使用Spine Pro 3.8.75 學習版來處理紅色肉棒與紅色小穴
的問題
這邊我使用Spine Pro 3.8.75 學習版來開啟魔物娘TD skel文件
不直接修改skel , 利用Spine學習版將skel文件另存為json文件
然後我再修改json文件即可 , 修改觸發物件名稱就好(不刪除物件)
因為不是每個人都會買正版SPINE
所以我的教程以免費資源為主 : )
以下方法我自己用正版Spine Pro和學習版Spine Pro 3.8.75測試過了
教程我使用虛擬機來安裝Spine Pro 3.8.75 學習版

取得Spine Pro v3.8.75.rar (125MB)
解壓縮後將整個Spine目錄放在你想要的硬盤目錄下
運行install.bat (註冊表登錄 + 桌面建立快捷)

點選桌面Spine快捷 , 運行Spine程序
這邊要注意一點 , 請勿更改Spine版本

更改Spine版本後再運行Spine程序會出錯

若出現此問題(程序出錯信息窗口彈出)
再運行一次install.bat 註冊表登錄即可再次運行Spine程序
Spine學習版只能綁定一個版本 3.8.75

修改紅熱大肉棒與紅色小穴
原圖集的確有肉棒與紅色小穴


但被和諧了(MaskMosaic) - 馬賽克遮罩
多了一張紅色遮罩的圖
將原肉棒和小穴遮蔽起來
所以要把紅色遮罩拿掉
即可正常顯示肉棒和小穴

Step 01 : 運行Spine Pro 3.8.75 學習版
Step 02 : 點選Spine程序最左上角, 會出現選項 , 點選"材質解包器"
Step 03 : 開啟altas文件(紋理圖集)
Step 04 : 匯出資料夾 , 在目錄下自己新增1個images目錄(方便放切片)
Step 05 : 匯出資料夾選擇出到images目錄
Step 06 : 勾選"非預乘alpha" (這邊的情況是要勾選的 , 看遊戲類別決定)
Step 07 : 點選"解開" 開始解包材質
Step 08 : 匯入資料
Step 09 : 開啟skel文件
Step 10 : 點選 JSON或二進位檔案
Step 11 : 點選"匯入"
Step 12 : 儲存變更 ----> 放棄變更
Step 13 : 按否略過"已調整圖片大小" 信息窗口
Step 14 : 載入Spine切片完成
Step 15 : 若出現橘色圖片Missing信息
Step 16 : 點選右邊圖片
Step 17 : 點選右下角文件夾圖示
Step 18 : 重新讀取images文件夾即可正常顯示
Step 19 : 點選Spine程序最左上角 , 會出現選項
Step 20 : 點選Spine選項 - 匯出
Step 21 : 數據 勾選JSON
Step 22 : 匯出資料夾 , 選擇你要存放JSON文件的路徑
Step 23 : 副檔名 .json , 格式JSON , 勾選美化功能(這樣JSON文件本文會自動分行)
Step 24 : 匯出 非必要資料 動畫清理 警告 , 我這邊都勾選
Step 25 : 材質圖集 : 打包 , 選擇"圖片資料夾" (一定要選 , 不然等下看不到圖)
Step 26 : 材質圖集 : 打包設定 (我沒做任何設定)
Step 27 : 按下"匯出" , 開始打包images , 匯出JSON文件
Step 28 : 使用EmEditor開啟剛才匯出的JSON文件
Step 29 : 搜尋(S) —> 取代(R) —> 尋找(F) 輸入 MaskMosaic
Step 30 : { “name”: “MaskMosaic1”, “bone”: “Penis”, “attachment”: “MaskMosaic1” }, 修改最後面的MaskMosaic1字串
Step 31 : 答案就在上面那行 , 改成Penis
Step 32 : { “name”: “MaskMosaic1”, “bone”: “Penis”, “attachment”: “Penis” }, 改完後存檔 (紅色大肉棒已被置換)
Step 33 : 使用skeletonViewer-3.8.80.jar開啟 3.8.75版JSON文件
Step 34 : 紅色大肉棒消除 , 非破壞性修改 , 僅修改觸發物件名稱
Step 35 : 另一張圖有紅色大肉棒與紅色小穴
Step 36 : 使用Spine Pro 3.8.75 學習版將skel文件轉換成JSON文件後
Step 37 : 使用EmEditor開啟剛才匯出的JSON文件
Step 38 : 搜尋(S) —> 取代(R) —> 尋找(F) 輸入 MaskMosaic
Step 39 : { “name”: “MaskMosaic1”, “bone”: “L_Body”, “attachment”: “MaskMosaic1” }, 修改最後面的MaskMosaic1字串
Step 40 : 答案就在上面那行 , 改成L_Body2
Step 41 : { “name”: “MaskMosaic1”, “bone”: “L_Body”, “attachment”: “L_Body2” }, 改完後存檔 (紅色小穴已被置換)
Step 42 : { “name”: “MaskMosaic2”, “bone”: “Penis”, “attachment”: “Penis1” },
Step 43 : 答案就在上面那行 , 改成Penis1
Step 44 : { “name”: “MaskMosaic2”, “bone”: “Penis”, “attachment”: “Penis1” }, 改完後存檔 (紅色大肉棒已被置換)
Step 45 : 使用skeletonViewer-3.8.80.jar開啟 3.8.75版JSON文件
Step 46 : 紅色大肉棒與紅色小穴消除 , 非破壞性修改 , 僅修改觸發物件名稱
Step 47 : 有3.8.79 skel直接轉json的程序 , 修改速度會比較快 , 魔物娘TD有580個色色skel要改 (r18_scenes)

點我看截圖詳情



























修改好的SPINE文件範本
spine_r18_fix.rar (7.2 MB)

Spine Pro 3.8.75 學習版
Spine Pro v3.8.75.rar (125MB)

Mega.nz載點

百度盤載點

提取码: 1234

相關工具

如果只是看看的话直接在atlas里面把size改成0应该就行吧,或者换个viewer

1 个赞

考慮到若有人拿來要做動態桌面的話
那就真的要修改skel文件內容

不過我的話會把大肉棒和小穴換成天下布魔那種 : )
直接換物件(這是我解包最大目的)

107801_joyResult
107801_joyResultx2
107801_joyResultx3
107801_joyResultx4
107801_joyResultx5
107801_joyResultx6

live2dex的话也可以直接隐藏插槽的,倒是没太大影响

1 个赞

剛看了一下
清了好幾次瀏覽器緩存
試了Microsoft Edge和Google連上遊戲網站
Sunny和Fiddler抓取情況真的不一樣

https://assets.game-monmusu-td.net/assetbundles/ver_0bdb2d72a9/webgl_r18/ablist.json

Microsoft Edge + Sunny : 抓不到
Microsoft Edge + Fiddler : 抓得到

Google + Sunny : 抓不到
Google + Fiddler : 抓得到

看來是Sunny的問題 : )


这胎教级的教程复刻成功了。
但TextAsset里没有文本,只有骨架和纹理,文本会在哪里呢