关于三国志幻想大陆

三國志幻想大陸無後綴hash文件分類方法
研究了很多天終於找到分類的方法
過程辛苦但也學到的很多 : )

分類前準備工作
你需要準備的軟件

(1) EmEditor (附上序號)
文字編輯器
寫bat批次命令會用到(分類需要用到bat批次命令) (這也是樓主一開始的希望)
文字檔轉換編碼用(UTF-16E帶簽名轉UTF-8不帶簽名)
bat批次命令讀取txt文件需要UTF-8不帶簽名編碼
skeletonViewer讀取atlas文件需要UTF-8不帶簽名編碼

(2) Hex Editor Neo (附上破解文件)
安裝完後將version.dll 複製一份到安裝目錄內 , 重新運行軟件
“C:\Users\你的電腦名稱\AppData\Local\HHD Software\Hex Editor Neo”
軟件語系 有簡體中文可以選擇

這是將無後綴文件分類主要工具(然後生成txt文件清單) (這txt文件清單就是bat批次命令會使用到的)
後面會教你如何分類
建議依照我的分類方式
因為我試過很多次了
目前覺得這樣的分類順序最好
BAT批次命令創建7大文件類別文件夾
BAT批次命令自動分類並移動各自文件夾
BAT批次命令自動加後綴
BAT批次命令後面會教你怎麼寫

(3) skeletonViewer-3.6.53.jar
開啟SPINE skel文件用

以上軟件已放百度盤

pw : 1234

教程開始
(01) 取得遊戲資源包 xapk (點選三國志幻想大陸 1.1.4後會自動下載xapk文件)
https://apkcombo.com/zh/三國志幻想大陸/com.sialiagames.starg.gp.tw/download/apk

另外遊戲資源更新包使用Fiddler分析後 , 找出conf文件(使用EmEditor開啟)
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/version.conf

再由version.conf找出遊戲資源更新包zip文件名 , 分別生成URL後下載(37_38.zip為最新版本)
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/37_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/36_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/35_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/34_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/33_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/32_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/31_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/30_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/29_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/28_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/27_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/26_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/16_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_37_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_36_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_35_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_34_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_33_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_32_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_31_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_30_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_29_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_28_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_27_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_26_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/lang_cn_16_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_37_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_36_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_35_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_34_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_33_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_32_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_31_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_30_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_29_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_28_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_27_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_26_38.zip
https://jstar-hotfix.sialiagames.com.tw/jstar-client/ob_hk/patch/38/voice_hk_16_38.zip

(02) 下載完xapk文件後將"三國志幻想大陸_1.1.4_apkcombo.com.xapk" (1.01GB)) 更改後綴為rar然後解壓縮
2023-10-12_203206
2023-10-12_203214

(03) 解壓縮完後會看到 res.apk (959MB) 更改後綴為rar然後解壓縮(res.apk就是遊戲安裝包自帶的遊戲資源)
2023-10-12_203950

(04) 三國志幻想大陸_1.1.4_apkcombo.com\res\assets\cri_res (390MB)
底下的音頻文件 *.awb *acb文件請使用foobar2000 +foobar2000外掛(vgmstream r1879) 開啟
底下的視頻文件 *.usm文件請使用VGMToolbox 分離出adx音頻文件 + m2v視頻文件
這裡有音頻文件播放和轉檔詳細介紹 关于苍雾残响和少女战争:幻想天下统一战解包求助 - #8,来自 qingliu

(05) 三國志幻想大陸_1.1.4_apkcombo.com\res\assets\hash (1.28GB)
這裡面就是無後綴 , 全都是hash文件名的未知類別文件 , 共有21142個文件
這些就是等下要分類出文件類別並添加上後綴的文件
2023-10-12_204835

(06) 將hash目錄移動至桌面(我的習慣 放桌面上處理)
2023-10-12_205817

(07) 這邊你要寫bat批次命令前 , 請安裝好EmEditor文字編輯器
在hash文件夾內創建一個txt文件 , 寫入以下批次命令代碼 , 存檔後更改後綴為bat , 運行bat前確保bat文件在hash目錄底下
2023-10-12_210319

我命名為 00_move_all_files_to_mix.bat
代碼如下

md mix
for /r %%x in (.) do move “%%x” mix

00_move_all_files_to_mix.rar bat批次命令bat打包如下
00_move_all_files_to_mix.rar (367 字节)

第一行代碼用意 : 創建一個文件夾 , 文件夾名稱為mix
第二行代碼用意 : 將hash文件夾底下所有子文件夾0 至 f 內的文件自動移動至mix文件夾內
我這邊的文件路徑使用相對路徑
運行bat前確保bat文件在hash目錄底下 , 如下圖所示
2023-10-12_211747

(08) 運行 00_move_all_files_to_mix.bat
自動創建mix文件夾
自動移動0到f目錄內所有文件至mix文件夾內
bat文件也會自動移動至mix文件夾內 , 再手動移出來

(09) bat自動運行完畢後 , 所有文件已自動移動至mix文件夾內(共有21142個文件) (1.28GB)

(10) 0 到 f 的空文件夾你就可以刪除了 , 後面也用不到

(11) 運行Hex Editor Neo準備開始針對mix文件夾內文件分類
運行後 , 工具(V) —> 文件中查找(F) —> 文件中查找(D)
請先設置好查找的文件夾路徑 (以我桌面文件夾路徑為例子)
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
添加(A) —> 確定
會添加要搜索文件夾路徑
文件夾路徑你也可以用貼上的方式再按確定


(12) 根據我多次測試的經驗 , 找出最合適的搜索順序
建議按照我的搜索順序來搜索文件
等下到最後bat批次檔 , 一口氣自動分類並加上後綴

(13) 先找出png圖檔 (尋找依據 : PNG hex in header : 89 50 4E 47)
工具(V) —> 文件中查找(F) —> 文件中查找(D)
類型 : 十六進制
查找內容 : 手動keyin 89 50 4e 47 (英文只能keyin小寫)
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
按下右上角 “查找全部” 會自動開始搜索匹配的文件
結果 : 找到 2800個文件
訊息欄的右上角有一個導出結果的圖示
按下存檔後將txt文件放在hash目錄底下
txt文件命名為01_png.txt (會加上數字是因為這是順序的搜索)
因為我sort.bat 批次命令都寫好每一個txt文件名
請照我的命名方式 , 並確保每一個txt文件都在hash目錄底下
bat 批次命令我使用相對路徑
2023-10-12_215051

(14) 找出jpg圖檔 (尋找依據 : JPG hex in header : FF D8 FF)
工具(V) —> 文件中查找(F) —> 文件中查找(D)
類型 : 十六進制
可以按delete鍵將剛才keyin 的hex刪除
查找內容 : 手動keyin ff d8 ff (英文只能keyin小寫)
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
按下右上角 “查找全部” 會自動開始搜索匹配的文件
結果 : 找到 259個文件
訊息欄的右上角有一個導出結果的圖示
按下存檔後將txt文件放在hash目錄底下
txt文件命名為02_jpg.txt (會加上數字是因為這是順序的搜索)
2023-10-12_220633

(15) 找出lua文件 (尋找依據 : LUA hex in header : 1B 4C 75 61)
工具(V) —> 文件中查找(F) —> 文件中查找(D)
類型 : 十六進制
可以按delete鍵將剛才keyin 的hex刪除
查找內容 : 手動keyin 1b 4c 75 61 (英文只能keyin小寫)
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
按下右上角 “查找全部” 會自動開始搜索匹配的文件
結果 : 找到 13204個文件
訊息欄的右上角有一個導出結果的圖示
按下存檔後將txt文件放在hash目錄底下
txt文件命名為03_lua.txt (會加上數字是因為這是順序的搜索)
2023-10-12_221531

(16) 找出xml文件 (尋找依據 : xml ANSI Code : xml version)
工具(V) —> 文件中查找(F) —> 文件中查找(D)
類型 : 字符串 (950 ANSI / OEM)
因為xml文件是明文 , 要使用ANSI Code查找
xml文件唯一的特徵就是內文都有"xml version"
查找內容 : 手動keyin xml version
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
按下右上角 “查找全部” 會自動開始搜索匹配的文件
結果 : 找到 219個文件
訊息欄的右上角有一個導出結果的圖示
按下存檔後將txt文件放在hash目錄底下
txt文件命名為04_xml.txt (會加上數字是因為這是順序的搜索)
2023-10-13_113547

(17) 找出atlas文件 (尋找依據 : atlas ANSI Code : format: RGBA8888)
工具(V) —> 文件中查找(F) —> 文件中查找(D)
類型 : 字符串 (950 ANSI / OEM)
因為atlas文件是明文 , 要使用ANSI Code查找
atlas文件唯一的特徵就是內文都有"format: RGBA8888"
查找內容 : 手動keyin format: RGBA8888 (你可以複製貼上不較不會出錯)
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
按下右上角 “查找全部” 會自動開始搜索匹配的文件
結果 : 找到 723個文件
訊息欄的右上角有一個導出結果的圖示
按下存檔後將txt文件放在hash目錄底下
txt文件命名為05_atlas.txt (會加上數字是因為這是順序的搜索)
2023-10-13_114016

(18) 找出json文件 (尋找依據 : json ANSI Code : {“name”:
工具(V) —> 文件中查找(F) —> 文件中查找(D)
類型 : 字符串 (950 ANSI / OEM)
因為json文件是明文 , 要使用ANSI Code查找
json文件唯一的特徵就是內文都有 {“name”:
之所以會使用那麼複雜的字符 , 這是因為這是我多次測試的結論
查找內容 : 手動keyin {“name”: (或你直接複製貼上也行)
記得最前面和最後面都不能有空白字元 , 以免影響搜索結果
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
按下右上角 “查找全部” 會自動開始搜索匹配的文件
結果 : 找到 227個文件
訊息欄的右上角有一個導出結果的圖示
按下存檔後將txt文件放在hash目錄底下
txt文件命名為06_json.txt (會加上數字是因為這是順序的搜索)
2023-10-12_224518

(19) 找出skel文件 (尋找依據 : skel version 3.6.52 hex : 33 2E 36 2E 35 32)
工具(V) —> 文件中查找(F) —> 文件中查找(D)
類型 : 十六進制
這邊是依照skel文件內都有版本編號3.6.52去查找對應的hex
先把所有skel文件都找出來
後面還要再細分是角色用skel , 技能特效用skel
可以按delete鍵將剛才keyin 的hex刪除
查找內容 : 手動keyin 33 2e 36 2e 35 32 (英文只能keyin小寫)
搜索位置 : C:\Users\KEVIN\Desktop\hash\mix
按下右上角 “查找全部” 會自動開始搜索匹配的文件
結果 : 找到 715個文件
訊息欄的右上角有一個導出結果的圖示
按下存檔後將txt文件放在hash目錄底下
txt文件命名為07_skel.txt (會加上數字是因為這是順序的搜索)
2023-10-12_225611

(20) 剩下未分類的文件 , 等下就不移動 , 保持在mix文件夾內
因為也用不到 , 不是SPINE文件 , 也不是圖像

(21) 透過Hex Editor Neo這軟件將未知文件類別分類好
分類文件類別需要7個txt文件
這7個txt文件都各別記載詳細的路徑

01_png.txt
02_jpg.txt
03_lua.txt
04_atlas.txt
05_xml.txt
06_json.txt
07_skel.txt
請確保都txt文件在hash文件夾底下 , 確保txt文件在mix文件夾外面
等下寫bat批次命令會用到

(22) 將這7個txt文件的編碼更改
UTF-16E帶簽名轉UTF-8不帶簽名
因為Hex Editor Neo生成的文件編碼為UTF-16E帶簽名
bat批次命令讀取的txt文件編碼要求為UTF-8不帶簽名
手動將這7個txt件編碼更改選擇 , 然後另存新檔



所以我才要你安裝EmEditor文字編輯器
如果你有使用skeletonViewer開啟NIKKE SPINE文件(.skel)
你會遇到幾個問題
(a) NIKKE skel文件需要用到skeletonViewer-4.0.64.jar 和 skeletonViewer-4.1.00.jar 開啟
版本查看方法 : 以EmEditor開啟skel文件 , 以二進位方式開啟
2023-10-13_054418

(b) NIKKE png文件分辨率有些要更改 , 不然skeletonViewer開啟後人物無法正常顯示
比如 : png文件分辨率為2048 x 2048 , atlas文件定義png分辨率為4096 x 4096
使用XnView圖像軟件將png圖像放大 : 2048 x 2048 —> 4096 x 4096
png 圖像分辨率更改依據 , 請查看對應的atlas文件 (可用EmEditor開啟)

(c) NIKKE atlas文件編碼有的是UTF-8帶簽名 , skeletonViewer開啟後會看不到圖
你需要手動將atlas文件編碼以EmEditor開啟 , 編碼更改選擇(UTF-8帶簽名 —> UTF-8不帶簽名) , 然後另存新檔
skeletonViewert再度開啟skel文件後就看得到圖了
以上為EmEditor文字編輯器對於SPINE文件的用途描述 , 解包好工具 , 有SPINE的手遊皆適用

(23) 開始寫bat批次命令 , bat運行後自動做3個動作
(a) mix文件夾外面自動創建7個新文件夾 , 文件夾名稱以文件類別命名
(b) mix文件夾內的文件會自動移出來到外面7個新的文件內 , 自動分類
(c) 7個新的文件內無後綴文件自動添加後綴 , 以文件類別添加後綴
批次命令我已經幫你寫好了 , 剛才7個txt文件名照我命名方式並放置在hash目錄內(並且確定是UTF-8不帶簽名編碼)
bat文件要放在hash目錄內 , bat文件不是放在mix文件夾內
然後運行 08.sort.bat 開始自動分類歸檔並添加後綴
bat批次命令rar打包給你 (08.sort.bat)
08.sort.rar (3.3 KB)

bat批次命令如下

MD png
REM 創建文件夾 名稱為png

for /f “tokens=*” %%i in (01_png.txt) DO (
MOVE “%%~i” “png”)
)
REM 讀取png類型文件清單list , 然後將清單內所有文件移出至png文件夾內
REM 文件清單編碼須為utf-8 未帶簽名

ren png*. *.png
REM 批次將ufo文件夾內文件加上後綴 .png

MD jpg
REM 創建文件夾 名稱為jpg

for /f “tokens=*” %%i in (02_jpg.txt) DO (
MOVE “%%~i” “jpg”)
)
REM 讀取jpg類型文件清單list , 然後將清單內所有文件移出至jpg文件夾內
REM 文件清單編碼須為utf-8 未帶簽名

ren jpg*. *.jpg
REM 批次將jpg文件夾內文件加上後綴 .jpg

MD lua
REM 創建文件夾 名稱為lua

for /f “tokens=*” %%i in (03_lua.txt) DO (
MOVE “%%~i” “lua”)
)
REM 讀取lua類型文件清單list , 然後將清單內所有文件移出至lua文件夾內
REM 文件清單編碼須為utf-8 未帶簽名

ren lua*. *.lua
REM 批次將lua文件夾內文件加上後綴 .lua

MD xml
REM 創建文件夾 名稱為xml

for /f “tokens=*” %%i in (04_xml.txt) DO (
MOVE “%%~i” “xml”)
)
REM 讀取xml類型文件清單list , 然後將清單內所有文件移出至xml文件夾內
REM 文件清單編碼須為utf-8 未帶簽名

ren xml*. *.xml
REM 批次將xml文件夾內文件加上後綴 .xml

MD atlas
REM 創建文件夾 名稱為atlas

for /f “tokens=*” %%i in (05_atlas.txt) DO (
MOVE “%%~i” “atlas”)
)
REM 讀取atlas類型文件清單list , 然後將清單內所有文件移出至atlas文件夾內
REM 文件清單編碼須為utf-8 未帶簽名

ren atlas*. *.atlas
REM 批次將atlas文件夾內文件加上後綴 .atlas

MD json
REM 創建文件夾 名稱為json

for /f “tokens=*” %%i in (06_json.txt) DO (
MOVE “%%~i” “json”)
)
REM 讀取json類型文件清單list , 然後將清單內所有文件移出至json文件夾內
REM 文件清單編碼須為utf-8 未帶簽名

ren json*. *.json
REM 批次將json文件夾內文件加上後綴 .json

MD skel
REM 創建文件夾 名稱為skel

for /f “tokens=*” %%i in (07_skel.txt) DO (
MOVE “%%~i” “skel”)
)
REM 讀取skel類型文件清單list , 然後將清單內所有文件移出至skel文件夾內
REM 文件清單編碼須為utf-8 未帶簽名

ren skel*. *.skel
REM 批次將skel文件夾內文件加上後綴 .skel

bat批次命令如上

(24) 運行 08.sort.bat 開始自動分類歸檔並添加後綴後結果

png文件夾 : 應該移動2800個文件 (2800個全數移動過來)


滑鼠右鍵 —> 分組方式(P) —> 其他(M) —> 勾選 尺寸 —> 按確定
滑鼠右鍵 —> 分組方式(P) —> 出現尺寸選項 —> png圖像會依照分辨率分組
這邊告訴你接下來你要如何去用肉眼分類 , 挑出角色SPINE用 png圖像
當然你也可以使用排序方式(O) —> 其他(M) —> 勾選 尺寸 —> 按確定後查看


jpg文件夾 : 應該移動259個文件 (實際188個移動過來) 少了71個文件
因為你先移動png (hex 89 50 4E 47) 再移動jpg (ff d8 ff)
使用Hex Editor Neo查找png文件夾內hex ff d8 ff 的確找到71個文件

代表png圖檔有71個文件 hex內容有ff d8 ff
這很正常 , 重複的hex內容
因為我要先分出圖檔png 和 jpg (Windows可以直接目視查看)
我用一個簡易的集合概念圖來表示
2023-10-13_101733

後面會出現文件數對不上的情況(因為已在上個類別先被移動)

lua文件夾 : 應該移動13204個文件 (實際13202個移動過來) 少了2個文件
一個在png文件夾內 (確定是圖像)
一個在jpg文件夾內 (確定非圖像的lua文件 , 再手動移至lua文件夾內)

atlas文件夾 : 應該移動723個文件 (723個全數移動過來)

xml文件夾 : 應該移動219個文件 (219個全數移動過來)

json文件夾 : 應該移動227個文件 (227個全數移動過來)

skel文件夾 : 應該移動715個文件 (715個全數移動過來)

mix文件夾 : 剩餘3068個文件 (大多是二進制文件) (未知文件類別) (基本上用不到)

(25) SPINE文件有三大類 .png .altas .skel
這三大類文件夾混有人物角色 + 技能特效 SPINE文件
你還要再去細分 , 找出人物角色專屬的SPINE文件

以上就是對於APK資源包的分類
遊戲更新包下載下來是zip文件
解壓縮後一樣使用同樣的方法來分類

01_png 2800 (2800) ok
02_jpg 259 (188) -71
03_lua 13204 (13202) -2
04_xml 219 (219) ok
05_atlas 723 (723) ok
06_json 227 (227) ok
07_skel 715 (715) ok

晚點再寫一篇如何細分spine文件
謝謝收看 : )

7 个赞