XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
"""Decode selected local display/catalog resources into the private research directory."""
import importlib.util,json,pathlib,re,struct,sys,zlib
spec=importlib.util.spec_from_file_location('assets','research/galaxy_asset_inventory.py')
saved=sys.argv;sys.argv=['inventory','artifacts/navigation-0410-qa/unused.json']
assets=importlib.util.module_from_spec(spec);spec.loader.exec_module(assets);sys.argv=saved
ROOT=assets.ROOT;OUT=pathlib.Path('artifacts/navigation-0410-qa/resources');OUT.mkdir(exist_ok=True)
for key in sys.argv[1:]:
    path=ROOT/('0'+key[0])/key; raw=assets.decode(path);(OUT/(key+'.fres')).write_bytes(raw)
    print('resource',key,'size',len(raw),'header',raw[:144].hex())
    strings=[{'offset':m.start(),'text':m.group().decode()} for m in re.finditer(rb'[A-Za-z_][A-Za-z0-9_.:/ -]{4,}',raw[:6000])]
    print('names',json.dumps(strings[:22]))
    for m in re.finditer(rb'\x78[\x01\x9c\xda]',raw):
        try:
            decoder=zlib.decompressobj(); data=decoder.decompress(raw[m.start():],128*1024*1024)
            if not decoder.eof: continue
        except zlib.error: continue
        target=OUT/(key+'.bin');target.write_bytes(data)
        (OUT/(key+'-strings.json')).write_text(json.dumps([{'offset':x.start(),'text':x.group().decode()} for x in re.finditer(rb'[A-Za-z_][A-Za-z0-9_.:/ -]{4,}',data)],indent=2))
        print('zlib',m.start(),'inflated',len(data),'prefix',data[:128].hex());break