大佬们能指路一下如何提取绯红的神约吗?

之前有见前辈分享过,可惜无了,所以发帖请教问问解密相关的

import os, sys

DAT_0180ac00 = [19, 91, 12, 13, 102, 22, 34, 43, 17, 25, 88, 64, 36, 16, 14, 66,
                49, 87, 56, 44, 53, 28, 11, 5, 116, 37, 58, 105, 20, 15, 77, 7, 29,
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 91, 12, 13, 102, 22,
                34, 43, 17, 25, 88, 64, 36, 16, 14, 66, 49, 87, 56, 44, 53, 28, 11, 5,
                116, 37, 58, 105, 20, 15, 77, 7, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0]

for subdir, dirs, files in os.walk(os.getcwd()):
    for file in files:
        # print os.path.join(subdir, file)
        filepath = subdir + os.sep + file

        if filepath.endswith(".png"):

            t = open(filepath, "rb").read()
            t = bytearray(t)

            if (t[0] == 85) and (t[1] == 70):  # U and F
                size = len(t)
                k = t.copy()
                off = 5
                b = t[4]
                if (t[size - 13] == 73) and (t[size - 12] == 69):

                    # for i in range(off):
                    # k[i] = t[size - off + i] ^ DAT_0180ac00[b + i]
                    k[0] = 137
                    k[1] = 80
                    k[2] = 78
                    k[3] = 71
                    k[4] = 13

                else:
                    k[0] = 67
                    k[1] = 67
                    k[2] = 90
                    k[3] = 33
                    k[4] = 0

                for i in range(off, 0x64):
                    k[i] = k[i] ^ DAT_0180ac00[(i + b) % 0x21]

                open(filepath, "wb").write(k)

                if (k[0] == 67) and (k[1] == 67):

                    base_file, ext = os.path.splitext(filepath)
                    if ext == ".png":
                        os.rename(filepath, base_file + ".pvr.ccz")

for subdir, dirs, files in os.walk(os.getcwd()):
    for file in files:
        # print os.path.join(subdir, file)
        filepath = subdir + os.sep + file
        ext = filepath.split('.')
        newpath = ext[0] + '.png'
        ext2 = ext[1]

        print(filepath)
        if ext2 == "pvr":
            command = "cmd /c TexturePacker" + " " + filepath + " " + "--sheet" + " " + newpath + " --data dummy.plist --algorithm Basic --allow-free-size --no-trim --max-size 102400"
            print(command)

            os.system(command)

解密之后,如果要查看spine需要根据图片大小修改对应alats中的size

3 个赞

大佬,不好意思,请问这个代码是怎么用的,编程小白不太看得懂

我这边使用的流程是:
先解压apk,进到assets目录,然后新建一个py文件将上面的代码复制进去保存;
然后下载TexturePacker并配置环境变量(并填入注册/激活码,不然解得的图片无效,会被TexturePacker的提示覆盖,当然也可以免费试用7天);
最后执行py代码等待解码完毕;

请问环境变量应该配置成什么样呢,我这边用好像无法检测到桌面上的文件

您好,桌面的一般是快捷方式,您可以点击右键-打开文件所在位置 即可找到绝对路径,比如默认的路径为:C:\Program Files\CodeAndWeb\TexturePacker\bin;
找到对应文件夹后,在TexturePackerGUI.exe旁边,您应该能看到TexturePacker.exe;
将该路径添加到此电脑(右键)-属性-高级系统设置-环境变量-Path 中添加该绝对路径;
然后您应该关闭已打开的cmd窗口,然后重新打开,输入TexturePacker回车,查看命令是否生效。

1 个赞

谢谢大佬,好像成功了

请问大佬,我在运行py文件时,运行到一半总是闪退。用python打开运行后提示我bytearray index out of range。我用TexturePacker打开文件后发现就解压了部分贴图


请问该怎么办?

代碼可用
拿apk內的spine來測試
png 圖檔可以成功解密
Echocalypse_2.0.70_Apkpure\assets\res\common\knight_spine














APK內 角色SPINE文件
200000.rar (1.0 MB)
210000.rar (3.5 MB)
300010.rar (3.1 MB)
300900.rar (2.8 MB)
300901.rar (2.6 MB)
301010.rar (217.0 KB)
500070.rar (5.8 MB)
500090.rar (9.0 MB)
500100.rar (4.6 MB)
600030.rar (2.1 MB)
600090.rar (4.7 MB)
510040.rar (4.2 MB)
510070.part1.rar (6 MB)
510070.part2.rar (4.8 MB)

補上兔娘 SPINE GIF (有些部位需要手動調整大小)







先上鎮樓圖
2024-05-05_123137

數個月前有網友在詢問
如何找到緋紅的神約遊戲數據包
看了一下網上的帖子
還真的有不少人詢問


2024-05-05_225619

這邊來講一下如何找到遊戲數據包
準備工具
遊戲APK安裝包
cmd.exe (運行python用)
Python 3.12 (運行python PNG解密代碼程序)
TexturePacker 4.90 (PNG轉換軟件)
夜神模擬器 (下載額外遊戲數據包) (另存為vdmk文件)
DiskGenius (開啟vdmk文件用) (將遊戲數據COPY出來到硬盤上)

開始講解
將C:\Windows\System32\cmd.exe
cmd.exe 複製一份到桌面上(不是建立捷徑)
你要建立捷徑也是可以
只是運行cmd.exe後 起始路徑會在C:\Windows\System32
你要還要手動改路徑 比較麻煩
直接運行複製版cmd.exe
起始路徑會隨cmd.exe所在目錄而改變(這比較方便你運行python)
cmd.exe等下解包會用到
2024-05-05_230849
2024-05-05_231038

yap_yu提供的png解密代碼複制後
使用記事本存檔後
檔名和後綴改成 png.py
png.rar (3.3 KB)

安裝Python

https://www.python.org/ftp/python/3.12.3/python-3.12.3-amd64.exe

安裝完python後
執行cmd.exe
輸入命令python測試有無反應
理論上會顯示python目前版本號
python安裝程式會自動添加環境變數給python程序目錄

安裝TexturePacker
昨晚試個三個破解版本
7.0.3為試用時間延長
3.0.9與4.9.0為程式Crack & Patch
TexturePacker 7.0.3(圖片轉檔不完全)(要重複多試幾次圖片才不會顯示要你購買訊息)
TexturePacker 3.0.9(圖片空白處過多)(頭像類方形圖檔轉檔尺寸會變得很奇怪)
TexturePacker 4.9.0(穩定版 無上面兩個版本問題)

這邊我以4.9.0為主
TexturePacker安裝完後
將破解檔TexturePacker.exe與TexturePackerGUI.exe
覆蓋安裝目錄下的檔案即可完成破解
C:\Program Files\CodeAndWeb\TexturePacker\bin
執行TexturePackerGUI.exe 第一次啟動程式
按下Agree (這樣等下才能使用cmd命令)
2024-05-05_004215
2024-05-05_004221
2024-05-05_004225
2024-05-05_004231
2024-05-05_004239





執行cmd.exe輸入命令TexturePacker
沒有反應是正常的


因為png解密python代碼中
有Call C:\Program Files\CodeAndWeb\TexturePacker\bin\TexturePacker.exe
這邊以cmd命令TexturePacker來實現 Call TexturePacker.exe
所以這邊要手動添加環境變數
讓cmd 命令 TexturePacker 有效化

(1)本機
(2)滑鼠右鍵 —> 內容
(3)進階系統設定
(4)最下面 環境變數
(5)下面 系統變數(S) —> 找到 PATH —> 編輯 ----> 新增
(6)新增路徑 C:\Program Files\CodeAndWeb\TexturePacker\bin
(7)按下確定

再執行cmd.exe輸入命令TexturePacker
此時就有反應了
等下python代碼運行後就可以直接Call TexturePacker.exe


遊戲資源包有兩大部分

(1)APK安裝包自帶
Echocalypse_2.0.70_Apkpure.apk (882MB)

(2)遊戲中再下載追加的資源包
使用夜神模擬器下載追加的資源包Cache(20240504最後更新) (5.24GB)

(1) + (2) 20240504最後更新的遊戲總數據包大小 6.24GB


緋紅的神約這遊戲無法使用Fiddler來獲取資源路徑
iPad + Fiddler (無法獲取遊戲資源包URL)
夜神模擬器 + Fiddler (無法獲取遊戲資源包URL)

夜神模擬器也看不到遊戲數據包下載後存放的位置(root後也一樣)
本機\data\com.yoozoo.jgame.global.web (空空如也 完全沒東西)
這也是之前很多人在詢問的問題
昨完研究一整晚 , 找到解決辦法了

其實遊戲數據包就放在這沒有錯
本機\data\com.yoozoo.jgame.global.web
只是被隱藏起來了

使用夜神模擬器
將整個數據備份起來
(1) 點選畫面右上角齒輪圖示
(2) 備份 —> 備份與導入 —> 備份數據 —> 繼續備份
(3) 另存npbk備份文件(存到你電腦上的硬盤裡)
(4) 更改npbk後綴為rar (以WinRAR解壓縮後會得到vmdk文件)
VMDK是一種文件格式,它描述了虛擬磁碟在VMware Workstation 和VirtualBox等虛擬機中使用的容器。
VMware虛擬磁碟格式. 副檔名 .vmdk. (From Wiki)








2024-05-04_221312
2024-05-04_221348
2024-05-04_221348
2024-05-04_221407

(5) 使用DISKGENIUS開啟vmdk文件
(6) 硬碟(D) —> 開啟虛擬磁碟檔案(V) ----> (選擇vmdk文件)
(7) 開啟後會出現分割表問題報告訊息視窗 ----> 不用理會 (按取消)
(8) 左下方會出現夜神模擬器的虛擬磁碟檔案所有內容(不被隱藏完全呈現)
(9) 主要分割(2) ----> \data\com.yoozoo.jgame.global.web (你會看到裡面就是追加下載的遊戲數據包)
(10) 選取com.yoozoo.jgame.global.web目錄 (滑鼠右鍵 ----> 複製到指定資料夾)
(11) 在電腦硬盤裡建立個目錄 將遊戲數據包目錄指定複製到這裡
(12) 開始複製 (全部共5.24GB) 這是追加下載的部分
(13) 追加下載遊戲數據包(5.24GB) + APK遊戲數據包(882MB) = 6.11GB
(14) 開始解包 (使用python解密PNG圖檔)


2024-05-04_221749










將png.py放到圖片目錄下
直接運行png.py開始解密
有的目錄無法一口氣解密完
會遇到幾張圖檔無法正常解密
所以只能手動過濾(找出有問題的圖檔)
這邊的圖檔我就解包了一整天
已整理好懶人包
放在Google Drive和Mega.nz



Echocalypse_RAW-FILE_APK_NOX-Cache_20240505.rar (6.45GB)
遊戲APK + 夜神下載的數據包 (PNG無解密)
Google Drive : Echocalypse_RAW-FILE_APK_NOX-Cache_20240505.rar - Google ドライブ
Mega.nz : 10.78 GB file on MEGA

Echocalypse_PNG_Decode_APK_NOX-Cache_20240505.rar (10.78GB)
PNG圖檔大部分都已解密 , 並整理在同一目錄下
Google Drive : Echocalypse_PNG_Decode_APK_NOX-Cache_20240505.rar - Google ドライブ
Mega.nz : 6.45 GB file on MEGA

全身人物SPINE (2.11GB)
Echocalypse_PNG_Decode_APK_NOX-Cache_20240505\knight_spine

戰鬥小人SPINE (394MB)
Echocalypse_PNG_Decode_APK_NOX-Cache_20240505\battle\knight_spine

懶人包中有遊戲所有的圖片 , 可以自己慢慢瀏覽
不能解密的圖 我在每個子目錄都額外放在failed目錄內
遊戲數據包最後更新日期 : 2024.05.04

解包相關工具

3 个赞

确实有够麻烦的0 0辛苦了谢谢教学