开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 〞剑舞长空
打印 上一主题 下一主题
收起左侧

[易语言纯源码] gbits文件查看工具

[复制链接]
38
发表于 2020-12-6 14:21:19 | 只看该作者   湖南省郴州市

请问一下,怎么确定数据改写到哪个文件
回复 支持 反对

使用道具 举报

37
发表于 2020-12-5 20:30:47 | 只看该作者   湖南省*
文件还有一份dbfs提取器源码,望完善!
回复 支持 反对

使用道具 举报

36
发表于 2020-12-5 20:27:12 | 只看该作者   湖南省*
完善了一下题主的源码,可以解压全部的帧数的图片并且可以播放动画!希望有人可以完善一下星星大佬的dbfs解压工具

gbitsview.zip

781.63 KB, 下载次数: 132, 下载积分: 精币 -2 枚

回复 支持 反对

使用道具 举报

35
发表于 2020-3-3 19:30:25 | 只看该作者   陕西省宝鸡市

老哥,可以吧这个资源提取器分享哈吗?
回复 支持 反对

使用道具 举报

34
发表于 2020-1-14 12:03:29 | 只看该作者   北京市北京市

文件目录
回复 支持 反对

使用道具 举报

33
发表于 2020-1-14 11:51:53 | 只看该作者   北京市北京市
问道采用了2种压缩方案,一种传统的zlib压缩,一种叫做 lzss压缩算法,lzss的参数是12 4 2 2 0,貌似填12 4 2 2 1也是能解开的。

提取图片的方案

.版本 2

.子程序 ASK_解压图片, 字节集, , 问道
.参数 参_传入数据, 字节集
.参数 参_压缩数据, 压缩信息
.局部变量 字节集, 字节集
.局部变量 临时集, 字节集
.局部变量 缓冲区, 字节集
.局部变量 结果区, 字节集
.局部变量 返回值, 字节集
.局部变量 存文本, 文本型
.局部变量 a, 整数型, , , 是否为带坐标的图片
.局部变量 b, 整数型, , , 头部大小
.局部变量 c, 整数型, , , 图片数据width
.局部变量 d, 整数型, , , 图片数据height
.局部变量 e, 整数型, , , 数据区域大小
.局部变量 f, 整数型, , , 数据区域大小
.局部变量 g, 整数型, , , 数据区域大小
.局部变量 h, 整数型
.局部变量 x, 整数型, , , x坐标
.局部变量 y, 整数型, , , y坐标
.局部变量 z, 整数型, , , 像素宽度
.局部变量 l, 整数型, , , 数据长度
.局部变量 num, 整数型, , , 循环次数
.局部变量 jici, 整数型

字节集 = 参_传入数据
a = 取字节集数据 (字节集, 3, 5)
l = 取字节集长度 (字节集)
.如果 (a > 0)  ' 只有单张图片
    b = 9
    临时集 = 取字节集中间 (字节集, b, a)
    g = 10000 × 10000 × 4
    缓冲区 = 取空白字节集 (g)
    .如果真 (取字节集左边 (临时集, 2) ≠ { 255, 216 })  ' JPG幻数
        返回 ({  })
    .如果真结束
    picture_readjpeg (临时集, a, 缓冲区, g, c, d, z)
    b = b + a
    缓冲区 = 取字节集左边 (缓冲区, g)
    临时集 = 取字节集中间 (字节集, b, l - b + 1)
    .如果 (取字节集长度 (临时集) = 0)
        h = c × d × 4 + 100
        临时集 = 取空白字节集 (h)
        picture_u3d_rgba (缓冲区, c × d × 3, 临时集, c, d, 3)
        结果区 = 取空白字节集 (c × d × 5 + 100)
        h = picture_rgba_png (临时集, 结果区, c, d, 0)
        临时集 = 取字节集左边 (结果区, h)
    .否则
        临时集 = zlib_压缩算法 (临时集, c × d, , 真)
        h = c × d × 4 + 100
        结果区 = 取空白字节集 (h)
        picture_rgb_a_rgba (缓冲区, 临时集, 结果区, h, c, d, z)
        缓冲区 = 取字节集左边 (结果区, h)
        结果区 = 取空白字节集 (c × d × 5 + 100)
        h = picture_rgba_png (缓冲区, 结果区, c, d, 0)
        临时集 = 取字节集左边 (结果区, h)
    .如果结束

    存文本 = 参_压缩数据.压缩文件名 + “_X” + 到文本 (x) + “_Y” + 到文本 (y) + “.png”
    返回值 = 到字节集 (存文本)
    返回值 = 到字节集 (取字节集长度 (返回值)) + 返回值
    返回值 = 返回值 + 到字节集 (取字节集长度 (临时集)) + 临时集
.否则
    b = 取字节集数据 (字节集, 3, 9)
    b = b + 1
    num = 取字节集数据 (字节集, 2, 41)
    .计次循环首 (num, jici)
        x = 取字节集数据 (字节集, 2, b)
        y = 取字节集数据 (字节集, 2, b)
        c = 取字节集数据 (字节集, 2, b)
        d = 取字节集数据 (字节集, 2, b)
        b = b + 4
        e = 取字节集数据 (字节集, 3, b)
        .如果真 (e = 0)
            到循环尾 ()
        .如果真结束
        f = 取字节集数据 (字节集, 3, b)
        .如果 (f = -140640256 或 f = 268435456 或 f = 813826048)
            b = b - 4
            临时集 = 取字节集中间 (字节集, b, e)
            b = b + e

            ' 缓冲区 = 函_文本字节集 (“424D000000000000000046000000380000000000000000000000010010000300000000000000120B0000120B0000000000000000000000F80000E00700001F00000000000000”)  ' RGB565
            ' 缓冲区 = 函_文本字节集 (“424D000000000000000046000000380000000000000000000000010010000300000000000000120B0000120B00000000000000000000007C0000E00300001F00000000800000”)  ' RGB1555
            缓冲区 = 函_文本字节集 (“424D000000000000000046000000380000000000000000000000010010000300000000000000120B0000120B00000000000000000000000F0000F00000000F00000000F00000”)  ' RGBA4444
            缓冲区 = 函_文本字节集 (“424D16640000000000003604000028000000710000006C0000000100100000000000AC02000000000000000000000000000000000000”)

            缓冲区 = 字节集替换 (缓冲区, 19, 4, 到字节集 (到整数 (c)))
            缓冲区 = 字节集替换 (缓冲区, 23, 4, 到字节集 (到整数 (d)))
            缓冲区 = 字节集替换 (缓冲区, 11, 4, 到字节集 (到整数 (54 + 512)))
            缓冲区 = 字节集替换 (缓冲区, 3, 4, 到字节集 (到整数 (54 + e)))
            临时集 = 缓冲区 + 临时集
            存文本 = 参_压缩数据.压缩文件名 + 到文本 (jici) + “_X” + 到文本 (x) + “_Y” + 到文本 (y) + “.bmp”

        .否则

            e = e - 8
            f = 取字节集数据 (字节集, 3, b)
            临时集 = 取字节集中间 (字节集, b, f)
            g = c × d × 5
            .如果真 (取字节集左边 (临时集, 2) ≠ { 255, 216 })  ' JPG幻数
                返回 ({  })
            .如果真结束
            .如果真 (g = 0)
                g = b × 100
            .如果真结束
            e = e - f
            缓冲区 = 取空白字节集 (g)
            picture_readjpeg (临时集, f, 缓冲区, g, c, d, z)
            b = b + f
            缓冲区 = 取字节集左边 (缓冲区, g)
            临时集 = 取字节集中间 (字节集, b, e)
            b = b + e
            临时集 = zlib_压缩算法 (临时集, c × d, , 真)
            h = c × d × 4 + 100
            结果区 = 取空白字节集 (h)
            picture_rgb_a_rgba (缓冲区, 临时集, 结果区, h, c, d, z)
            缓冲区 = 取字节集左边 (结果区, h)
            结果区 = 取空白字节集 (c × d × 5 + 100)
            h = picture_rgba_png (缓冲区, 结果区, c, d, 0)
            临时集 = 取字节集左边 (结果区, h)
            存文本 = 参_压缩数据.压缩文件名 + 到文本 (jici) + “_X” + 到文本 (x) + “_Y” + 到文本 (y) + “.png”
        .如果结束

        返回值 = 返回值 + 到字节集 (取文本长度 (存文本)) + 到字节集 (存文本)
        返回值 = 返回值 + 到字节集 (取字节集长度 (临时集)) + 临时集
    .计次循环尾 ()
.如果结束

返回 (返回值)
回复 支持 反对

使用道具 举报

32
发表于 2020-1-14 11:49:06 | 只看该作者   北京市北京市
本帖最后由 星星是我啊 于 2020-1-14 11:58 编辑

公布下源码吧 个人可以自己去研究

首先是入口部分
.版本 2

.子程序 ASK_打开文件, 文件信息, , 问道
.参数 参_文件名, 文本型
.参数 参_压缩信息, 压缩信息, 参考 数组
.局部变量 地址表, 字节集
.局部变量 文件信息, 文件信息

地址表 = {  }
ASK_循环递归 (参_文件名, 地址表, 12288, 参_压缩信息)
ASK_循环递归 (参_文件名, 地址表, 16384, 参_压缩信息)
文件信息.索引表 = { 1 }
文件信息.文件大小 = 函_取文件大小 (参_文件名)
返回 (文件信息)

真正的核心部分,读取所有文件的索引信息,包括文件名,偏移地址,文件大小之类的

.版本 2

.子程序 ASK_循环递归, , , 问道
.参数 参_文件名, 文本型
.参数 参_地址表, 字节集
.参数 参_地址, 长整数型
.参数 参_压缩信息, 压缩信息, 参考 数组
.局部变量 字节集, 字节集
.局部变量 临时集, 字节集
.局部变量 文本, 文本型
.局部变量 cc, 整数型
.局部变量 dd, 整数型
.局部变量 i, 整数型
.局部变量 l, 整数型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 c, 整数型
.局部变量 d, 整数型
.局部变量 e, 整数型
.局部变量 f, 整数型
.局部变量 g, 整数型
.局部变量 h, 整数型
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 z, 整数型
.局部变量 bb, 长整数型
.局部变量 aa, 长整数型, , "0"
.局部变量 压缩存储, 压缩信息, , "0"
.局部变量 文本存储, 压缩信息, , "0"
.局部变量 压缩信息, 压缩信息

参_地址表 = 参_地址表 + 到字节集 (参_地址)  ' 防止多次遍历这个地址,虽然可能不会重复出现
字节集 = 函_映射读文件 (参_文件名, 2048, 0, 参_地址)
a = 取字节集xx (字节集, 1, 26)  ' block标志 3为文件夹,5为文件 7为文件
.如果真 (a ≠ 3 且 a ≠ 5)  ' 如果为7,则为文件,防止遍历到文件 如果为文件夹,则无任何意义
    返回 ()
.如果真结束

' 前26字节意思
' int  0
' int  1
' int  当前block
' int  上一个block
' int  下一个block
' short ?层?
' short 废弃长度 04
' byte  未知?
' byte 3为文件夹,5为文件
bb = 取字节集xx (字节集, 3, 17) × 2048  ' 下一个链的地址
.如果真 (bb > 0 且 寻找字节集 (参_地址表, 到字节集 (bb), ) = -1)  ' 如果没有遍历过,则将下一个链加入到循环队列中
    加入成员 (aa, bb)
.如果真结束
d = 取字节集xx (字节集, 2, 23)  ' 废弃block大小
h = 取字节集xx (字节集, 2, 21)  ' 是否数组排序
字节集 = 取字节集右边 (字节集, 2048 - d)  ' 取出具体xx
z = 1  ' 定义当前读取xx起始地址,C语言从0开始
y = 2048 - d  ' 定义block大小
压缩信息.解压图片 = 1
.判断循环首 (z < y 且 z > 0)
    .如果真 (a ≠ 5 且 a ≠ 3)
        返回 ()
    .如果真结束
    .如果真 (a = 5)  ' 全部为文件
        c = 取字节集xx (字节集, 2, z)  ' 文本长度或者文件长度
        b = 取字节集xx (字节集, 1, z)  ' 标识符
        e = 取字节集xx (字节集, 1, z)  ' 标识符,也有可能是压缩算法标志(压缩算法目前发现2种,不排除未来加入其它算法)
        ' '压缩算法zlib或变异huffman算法,压缩算法的五个参数"12 4 2 2 0"
        .如果真 (b = 2)  ' 下一个坐标
            bb = 取字节集xx (字节集, 3, z) × 2048  ' 下一个链的地址
            .如果真 (bb > 0 且 寻找字节集 (参_地址表, 到字节集 (bb), ) = -1)  ' 如果没有遍历过,则将下一个链加入到循环队列中
                加入成员 (aa, bb)
            .如果真结束
            z = z + 4
            到循环尾 ()
        .如果真结束
        .如果真 (b = 3)
            g = g + 1
            压缩信息.偏移地址 = 取字节集xx (字节集, 3, z) × 2048
            压缩信息.索引位置 = 参_地址 + d + z - 1
            压缩信息.压缩前长度 = 取字节集xx (字节集, 3, z)
            压缩信息.压缩后长度 = 压缩信息.压缩前长度
            压缩信息.备用xx1 = 0
            加入成员 (压缩存储, 压缩信息)
            到循环尾 ()
        .如果真结束
--------------
后面的源码请自己研究
我当初研究了2周才完全了解这款游戏


回复 支持 反对

使用道具 举报

结帖率:50% (2/4)
31
发表于 2019-12-13 01:34:59 高大上手机用户 | 只看该作者   湖南省*
星星是我啊 发表于 2019-10-14 13:32
2年前曾经写过问道的解包工具,包括打开文件,解压文件及图片,替换文件及图片
文件索引list目录打开2秒搞 ...

可以加QQ123990 737
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
30
发表于 2019-11-20 22:59:23 | 只看该作者   河南省洛阳市
厉害了我的哥 6666
回复 支持 反对

使用道具 举报

29
发表于 2019-10-14 13:32:35 | 只看该作者   北京市北京市
2年前曾经写过问道的解包工具,包括打开文件,解压文件及图片,替换文件及图片
文件索引list目录打开2秒搞定。写了我前前后后将近2周,问道的资源文件结构确实国内行内领先
写其他游戏的解包工具,1-2小时就写完全部功能了



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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