藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★【黑暗之光SF★我是大主宰SF】【神将三国SF】★

★【0.1折】★【变态网页游戏私服】★

★神将三国网页版上线送V5 5w元宝 5000w铜币 我是大主宰上线满v,80万元宝,小怪都爆元宝,耐玩长久稳定★

【原始传奇SF/维京传奇SF】【GM包站手游】

★【原始传奇SF/维京传奇SF】【GM包站手游】★

★2025火爆『传奇岁月+赤焰号角+维京传奇+原始传奇』爆战力称号BUFF+神装99999999万人PK★

★全网独家 可以单机 可以互动的传奇!★

★全网独家 可以单机 可以互动的传奇!★

★全网唯一持续更新的可单机游戏!每15-25天更新一次内容,保持游戏新鲜度!! 众多独家的功能特色,众多你没见过的全新玩法,有能力的赚点烟钱,还能偶尔沙城战斗!★

★承接推广★
★承接推广★

★承接推广★

☆五一活动开放放置传奇☆

★五一活动开放放置传奇★

★可白嫖 上班摸鱼类 放置文字传奇游戏(放置休闲)qq群756025698★

★三职业复古★开局送神装★爆率100%★散人逆袭★

★三职业复古★开局送神装★爆率100%★散人逆袭★

★〖双线〗〖无忧传奇〗〖每日新区〗〖开局送神装 100%高爆率 装备元宝打怪爆〗★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★DNF★全职业平衡★公益服★
★DNF★全职业平衡★公益服★

【dnf86版本】【怀旧服】【全职业平衡】【非变态服】【非商业服】【775016356】

★《天使之战MU》经典奇迹重现★

★《天使之战MU》经典奇迹重现★

★2025年热门手游推荐:所有游戏充值永久0.1折,648只需6.48元!原版物价不膨胀★

★梦幻16门派全新大唐九黎★

★梦幻16门派全新大唐九黎★

★★新增全新门派九黎城,★不做垃圾,力争什么都做到最好★持续更新,长久稳定★

★彩虹岛s6独家玩法肝帝天堂★

★彩虹岛s6独家玩法肝帝天堂★

★s6彩虹岛,新服开区,来就送死霸脚底龙晶诸多特效。独家玩法护肝不杆不克,可刷一切★

查看: 12822|回复: 36

[GM工具] 仙侣奇缘2 big 包压缩解压工具

  [复制链接]
发表于 2011-10-7 20:46:28 | 显示全部楼层 |阅读模式
本帖最后由 隔叶黄鹂 于 2011-10-7 22:49 编辑



extract.exe: 在命令行中敲: extract -e talk.big char.big map1.big music.big ...
    参数: -i: 看压缩包的信息; -l/-nf: 看压缩包中所有的文件; -pf: 看压缩包中所有的目录; -e 按目录解压到当前文件夹下.
    注意每个开关对其后的文件生效, 比如 extract -i a.big -l b.big -pf c.big -e d.big 是看 a.big 的信息, b.big 的文件列表, c.big 的目录列表, 并解压缩 d.big.
compress.exe: 在命令行中敲: compress path.txt name.txt 生成的文件.big
    path.txt 是目录名列表, 可以从 extract -pf 中生成
    name.txt 是文件名列表, 可以从 extract -l/-nf 中生成

注:
    1.根据我对 big 文件格式的分析, 大于 64KB 的文件是分块压缩的. 金山使用的算法是在索引表中写出分了多少块, 而我的算法是对地址作加法校验. 如果看到
         warning: ../map2.big::\map\华东\杭州城.jpg  (790209->784225)
        这样的错误提示, 那就是地址加法校验失败了. 原因目前仍不清楚. 出现的机会也比较少.
    2. ZipLib.dll 就是著名的 zlib, 金山把它改了个名字叫 bigfile.dll. 可以不用我包里的 ZipLib.dll 而直接使用游戏目录下的 bigfile.dll, 一回事.

另外: 有谁想编 big 包压缩解压程序的? 我已经完整地分析出了其文件结构, 需要相关资料的 m 我吧.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2011-10-7 20:56:45 | 显示全部楼层
本帖最后由 隔叶黄鹂 于 2011-10-17 18:16 编辑

另外有谁能发个仙侣2的 img 图像处理工具? img 格式比 big 要复杂, 直接分析我没得到任何结果, 又懒得去追踪游戏主程序了, 有谁有就传上来吧.

2011.10.17 更新

想不到这么老的游戏还是有人关注. 这里应玄天真人的要求, 我把 big 文件格式的相关资料给晒出来吧.

仙侣奇缘 big 文件格式及文件名校验算法

第一部分: 文件头 (16字节)
  这一块由如下四个部分组成:
    文件格式识码      "xV4\x12" 4字节
    压缩文件的数目    4字节
    索引表数据偏移    4字节
    目录文件数据偏移  4字节

第二部分: 压缩文件
  这一部分由 N(N=压缩文件数目) 块组成, 每一块的内容是:
      压缩数据的长度[M] 2*M 字节
    文件的压缩数据[M]
  M是文件的块数. 对于超过64KB的文件, 全部是分成64KB的块压缩的. 上面这两个数组的内容是一一对应的.

第三部分: 索引表块
  文件头第三个字段指向了索引表块. 索引表块由如下四部分组成:
    块标识码            "\xAA\x55\xAA\x55"
    索引表长度          4字节
    索引表解压缩后长度   4字节
    索引表压缩数据
  解压缩之后的索引块内容以16字节为单元的、每个压缩文件的压缩信息, 内容是:
    文件名校验码        4字节
    文件压缩数据的偏移  4字节
    文件解压后的长度    4字节
    分块个数(上文的"M") 4字节
  注意:
    索引块是按校验码自小而大排列的, 因此索引块中文件的次序和名称文件中的文件次序完全不同.

第四部分: 目录文件块和名称文件块
  文件头的第四个字段指向了目录文件块, 目录文件块后面紧跟着的是名称文件块.
  这两块的格式和上面索引块一样:
      块标识码       "\x55\xAA\x55\xAA"
      压缩后的长度   4字节
    解压缩后长度   4字节
    压缩数据
  目录文件和名称文件的具体内容, 可以直接从我的解压程序中得到.

文件名校验算法:
  索引文件中是用校验码确定文件名的. 校验码是对文件名串(大写变小写后)做了如下的计算. 这段代码在代码位置 0x0053F434 (push ebp) 到 0x0053F48B (ret) 之间. 注意 game.exe 是用 upx 加壳过的, 反汇编时需注意一下:
    unsigned int calc_check_code(char * s, int l){
        unsigned int v = 0;
        for (int i=0; i<l; i++){
            unsigned int a = 0, a1 = 0;
            a = (s[ i ] * (i+1) + v) % 0x8000000B;
            a1 = a;
            v = (unsigned)((-a) << 4) - a1;
        }
        v ^= 0x12345678;
        return v;
    }
  
源码就不帖了, 反正有这些东西, 编程序只是体力活. 有谁有空就编个好用点的程序吧. 我比较懒........
发表于 2011-10-7 21:22:33 | 显示全部楼层
完全的看不懂。
 楼主| 发表于 2011-10-7 22:07:53 | 显示全部楼层
zq0230280253 发表于 2011-10-7 21:22
完全的看不懂。

呃, 我是图省事写了个命令行程序.
比如你要解压缩 talk.big, 就打开一个"命令提示符"(开始|附件|命令提示符), 进入到 talk.big 所在的文件夹,然后敲 extract -e talk.big, 就行了.
其它的东西是修改那些 big 包的内容时用到的.
发表于 2011-10-7 22:22:08 | 显示全部楼层
不错,支持了
发表于 2011-10-7 22:24:46 | 显示全部楼层
哦 不错 不过新手可能看不明白
发表于 2011-10-8 00:15:48 | 显示全部楼层
{:soso_e102:}谢谢了,先。
发表于 2011-10-8 08:07:25 | 显示全部楼层
仙2早就被开发商放弃了,因为签给金山运营,开发商这边有外挂问题一直解决不好,金山运营一向也是稀里糊涂,两边合作很不愉快,开发商现在主打仙3,建议楼主研究仙3吧
 楼主| 发表于 2011-10-8 09:27:47 | 显示全部楼层
ysws 发表于 2011-10-8 08:07
仙2早就被开发商放弃了,因为签给金山运营,开发商这边有外挂问题一直解决不好,金山运营一向也是稀里糊涂,两边 ...

不错的主意. 本来破&解仙侣二的压缩包纯属娱乐, 等分析清楚了仙侣三压缩包的话再跟各位分享吧.

从解包的内容看, 仙侣二客户端的权力实在太大了, 可以做外挂的地方太多了. 如果各位看一看解出来的内容, 我想就会明白侣二的外挂问题.
发表于 2011-10-10 21:52:17 | 显示全部楼层
这个很需要
发表于 2011-10-16 19:58:05 | 显示全部楼层
隔叶黄鹂仙侣奇缘2 big 包压缩解压工具 相关资料有没有
发表于 2011-10-16 20:15:24 | 显示全部楼层
我解开了 不知道怎么压缩了
发表于 2011-10-16 20:31:37 | 显示全部楼层
没图啊
发表于 2011-10-17 06:45:02 | 显示全部楼层
path.txt name.txt需要自己建立吗??
发表于 2011-10-17 06:46:15 | 显示全部楼层
我是解的开 压不回去了
 楼主| 发表于 2011-10-17 17:03:35 | 显示全部楼层
玄天真人 发表于 2011-10-17 06:45
path.txt name.txt需要自己建立吗??

是的, 我偷了点懒, 从 name.txt 中找到所有你要压的文件. 如果谁想写个更方便的程序, 我会提供相关资料的.

其实这两个文件内容很简单的, 后面我会给两个实际的例子, 我都是自己直接做这两个文件. 改 big 的方法是, 你把解出来后文件重新编辑一下, 或者创建一个新的文件, 然后用 compress path.txt name.txt path.big 得到 path.big, 然后在 目录下的 xlqy2.ini 的 [Patch] 这一节里加一行:
8=patch.big
就行了.

注意仙侣2会根据 [Patch] 中的文件重载已有的文件, 比如以前 char2.big 中已经有了 \Char\主角\法术\武士\001.txt, 在 [Patch] 中的某个 big 中也有这个文件, 那么你在游戏中看到的是 [Patch] 中这个文件的内容. 所以不需要修改游戏中已有的包, 直接做一个新的包放在 [Patch] 节里就行了. 而且, 用这种办法的话, patch 里面不需要放所有的东西, 只需要把你改过的文件压缩一下就行了.

最后是两个实际的例子, char.big 中的文件和目录. 如果自己写这两个文件的话注意一下 path.txt 中的次序, 先父文件夹再子文件夹, 不然解压的时候创建目录会出错的.

chra2.big 中 path.txt 的内容: 执行 extract -pf char2.big > path.txt 得到
\Char
\Char\主角
\Char\主角\法术
\Char\主角\法术\武士
\Char\主角\法术\法师
\Char\主角\法术\道士
\Char\任务
\Char\任务\关卡
\Char\动物
\Char\地图
\Char\地图\华东
\Char\地图\华东\桃花岛
\Char\活动

chra2.big 中 name.txt 的内容: 执行 extract -nf char2.big > name.txt 得到
E:\Media
\Char\主角\升级经验.txt
\Char\主角\法术\武士\001.txt
\Char\主角\法术\武士\002.txt
\Char\主角\法术\武士\003.txt
\Char\主角\法术\法师\001.txt
\Char\主角\法术\法师\002.txt
\Char\主角\法术\法师\003.txt
\Char\主角\法术\道士\001.txt
\Char\主角\法术\道士\002.txt
\Char\主角\法术\道士\003.txt
\Char\任务\乱葬岗.chr
\Char\任务\关卡\万年树妖.chr
\Char\任务\关卡\九尾冥狐.chr
\Char\任务\关卡\大力羊魔.chr
\Char\任务\关卡\媚影狐妖.chr
\Char\任务\关卡\巨斧熊魔.chr
\Char\任务\关卡\幽冥象魔.chr
\Char\任务\关卡\幽冥鬼王.chr
\Char\任务\关卡\牛头卫士.chr
\Char\任务\关卡\罗刹鬼.chr
\Char\任务\关卡\羊头卫士.chr
\Char\任务\关卡\荆刺猪王.chr
\Char\任务\关卡\血刀魔卫.chr
\Char\任务\关卡\血狼魔王.chr
\Char\任务\关卡\遗落宝箱.chr
\Char\任务\关卡\铁翼寒鹰.chr
\Char\任务\关卡\骷髅武士.chr
\Char\任务\恩惠盒子.chr
\Char\任务\枯木花妖.chr
\Char\任务\莲花.chr
\Char\任务\蓝灵兽.chr
\Char\动物\110.chr
\Char\动物\119.chr
\Char\动物\120.chr
\Char\动物\125.chr
\Char\动物\126.chr
\Char\动物\127.chr
\Char\动物\128.chr
\Char\动物\129.chr
\Char\动物\130.chr
\Char\动物\131.chr
\Char\动物\132.chr
\Char\动物\133.chr
\Char\动物\134.chr
\Char\地图\华东\桃花岛\凤头鹦鹉.chr
\Char\地图\华东\桃花岛\刺猬.chr
\Char\地图\华东\桃花岛\呆头鸭.chr
\Char\地图\华东\桃花岛\玲珑兔.chr
\Char\地图\华东\桃花岛\胖胖鸟.chr
\Char\活动\仙花.chr
\Char\活动\土1.chr
\Char\活动\土2.chr
\Char\活动\土3.chr
\Char\活动\土4.chr
\Char\活动\土魔.chr
\Char\活动\圣诞宝箱.chr
\Char\活动\圣诞树.chr
\Char\活动\圣诞老人.chr
\Char\活动\地仙.chr
\Char\活动\坟墓.chr
\Char\活动\天兵十夫长.chr
\Char\活动\天兵千夫长.chr
\Char\活动\天兵百夫长.chr
\Char\活动\天庭大将.chr
\Char\活动\小金猪.chr
\Char\活动\年兽.chr
\Char\活动\幽冥侍卫.chr
\Char\活动\幽冥战将.chr
\Char\活动\幽冥鬼众.chr
\Char\活动\幽冥鬼狐.chr
\Char\活动\张大妈.chr
\Char\活动\怒斩金将.chr
\Char\活动\慧缘禅师.chr
\Char\活动\易水.chr
\Char\活动\木1.chr
\Char\活动\木2.chr
\Char\活动\木3.chr
\Char\活动\木4.chr
\Char\活动\木魔.chr
\Char\活动\杨树.chr
\Char\活动\柳树.chr
\Char\活动\桃树.chr
\Char\活动\梧桐.chr
\Char\活动\榆树.chr
\Char\活动\水1.chr
\Char\活动\水2.chr
\Char\活动\水3.chr
\Char\活动\水4.chr
\Char\活动\水魔.chr
\Char\活动\火1.chr
\Char\活动\火2.chr
\Char\活动\火3.chr
\Char\活动\火4.chr
\Char\活动\火魔.chr
\Char\活动\灵鼠.chr
\Char\活动\炽火.chr
\Char\活动\烈金.chr
\Char\活动\焦土.chr
\Char\活动\白素贞.chr
\Char\活动\短柳.chr
\Char\活动\矮杨树.chr
\Char\活动\石牛精.chr
\Char\活动\绿杨.chr
\Char\活动\舞天.chr
\Char\活动\茶树.chr
\Char\活动\荒废的农田.chr
\Char\活动\藏仙.chr
\Char\活动\野1.chr
\Char\活动\野10.chr
\Char\活动\野11.chr
\Char\活动\野12.chr
\Char\活动\野13.chr
\Char\活动\野14.chr
\Char\活动\野15.chr
\Char\活动\野16.chr
\Char\活动\野2.chr
\Char\活动\野3.chr
\Char\活动\野4.chr
\Char\活动\野5.chr
\Char\活动\野6.chr
\Char\活动\野7.chr
\Char\活动\野8.chr
\Char\活动\野9.chr
\Char\活动\金1.chr
\Char\活动\金2.chr
\Char\活动\金3.chr
\Char\活动\金4.chr
\Char\活动\金魔.chr
\Char\活动\钥匙孔.chr
\Char\活动\铁匠杜衡.chr
\Char\活动\铁牛精.chr
\Char\活动\铜牛精.chr
\Char\活动\青木.chr
\Char\活动\颜桃树.chr
 楼主| 发表于 2011-10-17 17:06:29 | 显示全部楼层
本帖最后由 隔叶黄鹂 于 2011-10-17 18:12 编辑
玄天真人 发表于 2011-10-16 19:58
隔叶黄鹂仙侣奇缘2 big 包压缩解压工具 相关资料有没有


你是要压缩包的格式吗? 我找一下, 呆会直接写在帖子里面. 详见沙发帖.
发表于 2011-10-17 20:24:12 | 显示全部楼层
谢谢哈 不知道你IMG图像弄的怎么样了
 楼主| 发表于 2011-10-17 22:12:07 | 显示全部楼层
玄天真人 发表于 2011-10-17 20:24
谢谢哈 不知道你IMG图像弄的怎么样了

IMG 我已经分析出一部分格式内容, 最近有点忙, 暂时没时间去分析这些代码, 所以把目前的进度帖出来, 希望有谁来解读一下 IMG 格式. 其实都是体力活了.

现在知道是 256 色的 BMP (一点也没压缩), 只是编码方式有点奇怪, 透明的地方在编码中大概是直接跳过的. 我已经追踪到解码函数, 目前追踪到这些代码:

005397F0    IMG 格式和 SPR 格式处理跳转到相同的处理函数地址 005397F0, 说明这两种格式没有差别.
005397F0    开始图像解码, 读图像大小 数目 颜色深度什么的
00539904    调用图像颜色转换代码:
++005399DD  8 位颜色转换到 24 位颜色的程序, 调色板内存次序是 RGB (注意 Windows BMP 是 BGR)
++005399EF  图像已经换码完毕
00539BEC    开始图像数据解码程序段
+00539CE7   调用行解码程序:
++0053FCBC  开始行数据解码程序段

IMG 格式的全部内容就在这些代码里面.
发表于 2011-10-18 08:37:13 | 显示全部楼层
最好写个程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明

排行榜|联系我们|小黑屋|手机版|Archiver|游戏藏宝湾 |

GMT+8, 2025-5-19 22:28 , Processed in 0.078464 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表