一个极其隐秘只有...吧 关注:2,376贴子:11,034

东方永夜抄(\妖妖梦)游戏资源解包

只看楼主收藏回复

总之先放源码,过程后面慢慢打
https://github.com/xfgryujk/THUnpacker/
因为比较闲把妖妖梦的资源也破解了,文件结构差不多就是没加密
忘记把源码拷回家,刚刚重打了一遍
我们不能把不认同和不忠诚混为一谈。——爱德华·R·默罗


1楼2015-04-10 23:57回复

    然后读取了文件尾部

    buffer2又被传入了解密函数(参数不一样),然后结果和第三个DWORD被传入了另一个函数
    (这个函数里用第三个DWORD的大小申请了结果buffer内存,并且比原buffer长度略大,所以推测是解压函数)

    看一下结果buffer,是{文件名'\0', 开始地址, 原长度, 0}这样的结构,看来是文件信息了
    所以第二个DWORD是文件信息的地址,第三个DWORD是文件信息的原长度

    魔装少女就是本大爷!——相川步


    4楼2015-04-11 11:22
    回复
      2025-06-04 09:48:28
      广告
      后面这个函数是把文件信息格式化成{文件名指针, 开始地址, 原长度, 0}这样的结构
      传入了第一个DWORD并且循环了第一个DWORD次
      所以第一个DWORD是文件数量

      这里文件结构就算分析完了,然后分析算法
      命运这种东西是能简单改变的!——前原圭一


      6楼2015-04-11 11:35
      回复
        打开刚入手的神器IDA (其实上面的分析是OD和IDA结合做的,因为IDA有流程图还可以定义变量名)
        打开解密函数和解压函数,按一下F5就能翻译成C代码!
        然后修改一下能用就行了,具体算法实在不想去理解/w\


        p.s.在文本字串参考里看到了关于zlib的内容,但是我用zlib的uncompress无法解压这里的数据
        命运这种东西是能简单改变的!——前原圭一


        7楼2015-04-11 11:46
        回复
          然后终于如愿以偿的弄到了thbgm.fmt
          它的结构是这样的{文件名'\0', 0, 开始地址, 未知, 前奏长度, 整个音频长度, 未知, 采样率, 每秒字节数, 未知, 0}

          吐槽:为什么其他资源都压缩了就是BGM不压缩,游戏大部分大小就在WAV BGM上了...
          贫乳是珍贵的!具有稀少价值!——泉此方


          8楼2015-04-11 12:00
          回复
            红魔乡也解包了,但是现在在学校只能用手机发报告,回家后更新源码
            首先要脱壳(不脱壳也可以但是有点麻烦),过程看我另一个帖子
            这次的文件有点奇葩,因为是按位储存文件的(而不是字节),直接盯着16进制什么也看不出...
            不知道是为了加密还是压缩,不过对于压缩意义不大吧...而且还浪费了性能


            来自Android客户端9楼2015-04-29 13:30
            回复
              红魔乡的资源文件读取顺序:字节上从低到高,每字节从高到低读位
              如果要读一个数字先读2位,把它+1就是数字的字节长度,然后再读长度*8位


              来自Android客户端10楼2015-04-29 13:37
              回复
                膜拜


                IP属地:河南来自Android客户端11楼2015-04-29 15:54
                回复
                  2025-06-04 09:42:28
                  广告
                  根据之前的经验直接搜索红魔乡的magic number(0x33474250,ascii的PBG3)就来到了解包函数0x43C720
                  然后动态调试静态分析结合总算看出它是按位读取的...(只是我懒得写过程吧!)
                  其中0x43C2A0这个函数就是按照10楼那个方法读取的



                  动态调试时看下内存就能猜出文件地址和原长度和文件名了,还有3个未知是我不关心的...
                  我得到神奇宝贝了!——小智


                  12楼2015-04-30 23:37
                  回复
                    思路清楚!


                    IP属地:湖南14楼2016-07-20 12:47
                    回复
                      好厉害


                      IP属地:江苏来自Android客户端15楼2016-07-20 16:44
                      回复
                        这么好的解包教程必须顶!


                        来自手机贴吧16楼2016-07-26 13:07
                        回复
                          弱弱的问下LZ= =。
                          如果想学习制作删帖机和破解的这种电脑编程,应该从什么学起呢? C语言么?


                          IP属地:北京17楼2016-07-31 22:48
                          收起回复
                            感谢谢


                            18楼2017-03-21 18:07
                            回复
                              2025-06-04 09:36:28
                              广告
                              我挖


                              IP属地:广东19楼2017-11-10 17:32
                              回复