我正在尝试提取包含纹理、网格等的游戏文件。我想看看制作纹理模型有多难。我只知道从学校和 youtube 教程中编辑图形的知识,我真的很懒惰,放弃了一些非常快的东西,但我想如果我可以从一开始就开始制作这个游戏,拥有我可以制作的完整文件结构感觉(不像 ninjaripper)也许我可以激励自己这样做。我尝试使用 quickbms 脚本以及来自 xentax 和 zenhax 论坛的一些工具,但是 quickbms 给了我错误,并且该工具什么也没做。我完全是逆向工程的初学者,因为我只是接触它,因为我没有太多事情要做。
我有文件的标题,它是 EPCK,然后我猜下一行是解压缩的文件大小(基于 offzip 扫描,看到几乎所有大小为 131072 的文件)我有引用存档中第一个文件的偏移量?这是 29,我有一部分是每个文件的开头?这是“.x”或“x”。我试图理解 quickbms 脚本,看看我是否可以对其进行一些操作,以及出现错误的原因是什么,但即使我知道它生成了存储偏移量的数组,我还是无法理解错误背后的原因. 长话短说,我需要有关解压缩文件的后续步骤的帮助。我想从一开始就完全理解它,这样我就可以帮助其他初学者,或者我可以停止寻求帮助。我猜' 对我来说真的很难理解,因为这个档案可能是加密的。Quickbms 脚本在第 42 行给出错误。
脚本:https
: //drive.google.com/open?id= 1C1cGRsaY4Kx9xgL4Ov- VYA61wNTqtzC0文件:https : //drive.google.com/open? id =1l2eWZmBwxRe6RraLWQRWBTfkz8zW-PRL
idstring "EPCK"
get DUMMY long
get UNPACKED_SIZE long
get OFFSET long
goto OFFSET
get XSIZE long
get SIZE long
get ZSIZE long
savepos OFFSET
#clog MEMORY_FILE OFFSET ZSIZE SIZE # unused? zlib compression
math OFFSET += XSIZE
goto OFFSET
endian big
comtype xmemdecompress
get EPCK_SIZE asize
putvarchr MEMORY_FILE UNPACKED_SIZE 0
log MEMORY_FILE 0 0
append
for OFFSET = OFFSET < EPCK_SIZE
math NEXT_OFFSET = OFFSET
math SIZE = 0
for STOP = 0 == 0
goto NEXT_OFFSET
get CHUNK_ZSIZE byte
if CHUNK_ZSIZE == 0xFF
get CHUNK_SIZE short
get CHUNK_ZSIZE short
math STOP = 1
else
goto NEXT_OFFSET
get CHUNK_ZSIZE short
math CHUNK_SIZE = 0x8000
endif
math SIZE += CHUNK_SIZE
savepos NEXT_OFFSET
math NEXT_OFFSET += CHUNK_ZSIZE
next
math NEXT_OFFSET += 5
xmath ZSIZE "NEXT_OFFSET - OFFSET"
clog MEMORY_FILE OFFSET ZSIZE SIZE
math OFFSET = NEXT_OFFSET
next
append
set NAME string "dump_scc_data.bin"
get SIZE asize MEMORY_FILE
goto 0 MEMORY_FILE
findloc OFFSET binary "\0\0\0\0\0\0\0\0" MEMORY_FILE ""
if OFFSET == ""
log NAME 0 SIZE MEMORY_FILE
else
math OFFSET x= 0x10000
log MEMORY_FILE2 0 OFFSET MEMORY_FILE
append
filexor 0xb7
xmath TMP "SIZE - OFFSET"
log MEMORY_FILE2 OFFSET TMP MEMORY_FILE
append
filexor ""
log NAME 0 SIZE MEMORY_FILE2
endif

