机甲世纪II 资源文件分析
2012-08-16 11:47
176 查看
机甲世纪一些资源所在目录:
\机甲世纪Ⅱ\AOA\RESOURCE
其中Fonts.pcg文件应该是空数据文件,只包含文件头数据,所以可以结合其他文件进行比较分析,这里比较Effects.pcg
Fonts.pcg
Effects.pcg
代码:
\机甲世纪Ⅱ\AOA\RESOURCE
其中Fonts.pcg文件应该是空数据文件,只包含文件头数据,所以可以结合其他文件进行比较分析,这里比较Effects.pcg
Fonts.pcg
Effects.pcg
代码:
#! /usr/bin/env python # -*- coding: gb2312 -*- # # # # Usage: # python <fileName> <资源文件> <目标文件夹> # # example: # python extractor.py UI.pcg temp import sys, os import os.path import binascii #转换小端模式 int def lETransformInt(hexString): sbr="" j=0 for i in range(len(hexString)-1,-1,-1): sbr = sbr + hexString[i] return int(binascii.b2a_hex(sbr), 16) #转换小端模式 String def lETransformStr(hexString): sbr="" j=0 for i in range(len(hexString)-1,-1,-1): sbr = sbr + hexString[i] return binascii.b2a_hex(sbr) #创建目录 并构造文件路径 def getRootDir(path): fullPath = os.getcwd() + "\\"+ sys.argv[2] +"\\" fileName = os.path.basename(path) reFilePath = path.split(fileName)[0] fullPath = fullPath + reFilePath if not os.path.isdir(fullPath): os.makedirs(fullPath) return fullPath + fileName #按路径写入文件 def wtiteFileWithPathAndHex(path, HexStr): fileName = getRootDir(path) hexF = open(fileName, "wb") hexF.write(HexStr) hexF.close() if len(sys.argv) != 3 : print "Usage:\n\tpython <fileName> <资源文件> <目标文件夹> \nexample:\n\tpython extractor.py The_Spell.vst temp " else: f = open(sys.argv[1], "rb") #17 定位到文件个数段 f.seek(17, 0) #读取文件数目 fileCount = lETransformInt(f.read(4)) globalOffset = 61 print fileCount fileNum = 0 while fileNum < fileCount: fileNum = fileNum + 1 #定位到偏移地址 f.seek(globalOffset, 0) #print "--------------" + str(globalOffset) #读取文件名长度 filePathLength = lETransformInt(f.read(2)) #print filePathLength #读取文件路径 filePath = f.read(filePathLength) print "path:" + binascii.b2a_hex(filePath) + "\n" +filePath #读取偏移长度 文件大小 offsetAdd = lETransformInt(f.read(4)) #print "offsetAdd:" + str(offsetAdd) #移过32字节 f.seek(32, 1) #读取偏移地址 文件起始地址 originAdd = lETransformInt(f.read(4)) #print "originAdd:" + str(originAdd) #按偏移地址读取 f.seek(originAdd, 0) #获取偏移的长度的数据 fileStr = f.read(offsetAdd) wtiteFileWithPathAndHex(filePath, fileStr) #计算文件索引位置 globalOffset = globalOffset + 118 + filePathLength
相关文章推荐
- Android源码分析(二)-----如何编译修改后的framework资源文件
- [转载]cocos2d-x3.2源码分析(一)类FileUtils--实现把资源放在Resources文件目录下达到多平台的引用
- spring boot实战(第六篇)加载application资源文件源码分析
- 热血传奇之资源文件与地图的读取分析
- 分析pe文件资源(学习)
- 【Cocos2d-x 3.2源码分析】(一)类FileUtils -- 实现把资源放在Resources文件目录下达到多平台的引用
- Android resources.arsc资源文件防护原理分析
- 影响网站加载速度之外部资源文件分析
- java加载jar包下的资源文件过程及原理分析
- cocos2d-x3.2源码分析之 ---- 类FileUtils实现把资源放在Resources文件目录下达到多平台的引用
- 一个最简单GAL游戏资源文件黑盒分析(二)
- 前导赤壁分析(1)——图片资源文件
- 前导赤壁分析(3)——文本资源文件
- Android resources.arsc资源文件防护原理分析
- 樱花大战资源分析之二 SPR文件格式不完全分析
- 原因分析如下: 遇到这种情况,很有可能是把一个int型业务数据的 设置setText()或者类似的方法中, 这样Android系统就会主动去资源文件当中寻找, 但是它不是一个资源文件ID, 所
- 一个最简单GAL游戏资源文件黑盒分析(二)
- 前导赤壁分析(2)——调色板资源文件
- U3D资源文件结构分析[1]
- Android资源文件分析