新射雕群侠传解包求助

各位大佬好,这个游戏的文件都在安装包里,其他文件好像都没有加密,就图片加密了。有大佬可以帮我看看,教教我怎么解。

肉眼看看到了PKM20标头,看起来没加密只是加了点干扰,你把PKM之前的都删掉,用这个项目看看能否转换成png

大佬,我试了几个,它显示的这些

我提取了一小部分,大佬有空帮忙看看
我用夸克网盘分享了「射雕.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:夸克网盘分享

这么挖坟,快一年了你们没人用ida看看的吗。。。 :joy:

游戏用的是LZ4ETC2,先lz4流式解压,然后正常etc2加载,实现大概是这样:

import texture2ddecoder
import lz4.block
import struct
import os
from PIL import Image

def decm(compressed_data: bytes) -> bytearray:

    total_uncompressed_size = struct.unpack('<I', compressed_data[4:8])[0]

    final_buffer = bytearray()
    current_pos = 8
    last_decompressed_block = b""

    block_index = 0
    while current_pos < len(compressed_data):
        if current_pos + 4 > len(compressed_data): 
            break
        compressed_block_size = struct.unpack('<I', compressed_data[current_pos : current_pos + 4])[0]
        current_pos += 4
        if compressed_block_size == 0: 
            break

        compressed_block = compressed_data[current_pos : current_pos + compressed_block_size]
        current_pos += compressed_block_size

        decompressed_chunk = lz4.block.decompress(
            compressed_block,
            uncompressed_size=16 * 1024,
            dict=last_decompressed_block
        )
        final_buffer.extend(decompressed_chunk)
        last_decompressed_block = decompressed_chunk
        block_index += 1

            
    return final_buffer[:total_uncompressed_size]


def conv(pkm_data: bytes, output_path: str):

    header_fields = struct.unpack_from('>HHHHH', pkm_data, 6)
    
    etc_format_enum = header_fields[0]
    width = header_fields[1]
    height = header_fields[2]

    if etc_format_enum in [2, 3, 4, 10, 11]:
        mode = "RGBA"
        decoder_func = texture2ddecoder.decode_etc2a8
    elif etc_format_enum in [1, 9]:
        mode = "RGB"
        decoder_func = texture2ddecoder.decode_etc2

    pixel_data = pkm_data[16:]
    decoded_pixels = decoder_func(pixel_data, width, height)

    image = Image.frombytes(mode, (width, height), decoded_pixels)
    image.save(output_path, 'PNG')

if __name__ == "__main__":
    with open("effect_zhuanshushenqi_lingxufuchen.png", "rb") as f:
        comp = f.read()

    conv(bytes(decm(comp)), "decompress.png")

如果有啥问题的话去问ai,我对非二次元游戏不怎么感兴趣 :pray:

请问你的新射雕在哪下载的啊?我找了好多地方都没有,或者可以给我一份吗?

你的全部文件都处理成功了吗?我刚下载了个,处理有部分不行,然后也是颜色不对