牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

<天龙八部Online>资源包Axp格式研究

很久没有做过逆向了,今天就玩了玩,并且玩了一整天。以下为研究成果。
Axp包其实是很简单的,结构简单,明文保存。

Axp文件格式大致上如下:
1.文件头;
2.索引表;
3.文件名表;
4.数据。
其中,文件名表以文件名为(list)的文件存在于数据当中。我想,之所以要有这么一个东西,而不和索引表合二为一,恐怕是因为文件名是变长之故吧。

Axp文件头的格式大致为:
1. 文件标示,一般为字符串“AXPK”,它占据了四个字节,占据空间为0x00-0x04;
2.索引表偏移量,为unit,它占据了四个字节,占据的空间为:0x10-0x13;
3.文件数,为unit,它占据了四个字节,占据的空间为:0x14-0x17。
文件头占据40个字节,既是在0x00-0x27的空间内。

一般来说,索引表的偏移量为:0x60028,数据区的偏移量为:0x160028.
不过还是依照以下流程获取偏移量为好:
1.获取文件头的索引表偏移量;
2.使用索引表偏移量定位到文件具体位置;
3.使用文件头获取到的文件数来读取文件数条索引;
4.根据索引查找文件。
在这里我是很纳闷的:文件名表文件没有特殊位置,也似乎没有看到有文件头保存的偏移量指向它,如何去获取这个文件是个很令我困扰的事情。另外,表里面的文件名顺序和资源包里面的文件排列顺序似乎是没有一个顺序对应的关系的。如何将索引表和文件名表进行关联,又是一个令人困扰的事情,或许能够解释通的大概就是他们是读取后需要排序的,或者说还有什么特别的相关数据我没有获取到。


索引表的索引:
1.偏移量,unit;
2.文件大小,unit;
3.标志位,unit,现在似乎只有0x00000000和0x80000000两个标识,用于标示该文件是否可以被使用或者已经被删除。


到现在为止,最令我困惑的就是那两张表该如何进行关联和绑定数据。还有就是如何去获取文件名表。

posted on 2008-11-14 03:26 杨粼波 阅读(1965) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理