GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 236|回复: 28
收起左侧

[技术交流] 【经验记录】在解包HAS游戏CG时的一些过程记录

[复制链接] |关注本帖

收到情书祈祷术灵光补脑剂赫夫帕夫附魔金苹果石肤术喋血日记本

     楼主| horizonLd 发表于 9 小时前 | 显示全部楼层 |阅读模式 <


    写在前面

    去年的时候解包了“HAS:我用催眠APP把全校男生变成了我的X奴”这个游戏,而最近也在解一些其他的,突然想起来之前解HAS的经历,感觉蛮有趣的,遂发个帖记录一下过程。

    指路一下当时的资源帖,当时还不会编辑帖子,现在也已经翻新惹~

    还是想不出来帖子放在哪个分区合适,只是个人向的心得记录帖,最后还是感觉在CODE板块里合适点()


    分析游戏

    结合游玩过程和游戏目录的文件架构,基本可以确定是RPG Maker MV构建出的产物,因为根目录里有nw或node相关的dll库,所以应该是RPG Maker MV构建出的NW.js程序。



    NW.js感觉有点像Electron,就是用写网页的方式写软件,那根目录下的content文件夹内就是这个“网页”的内容了。



    那就可以一眼锁定到其中的“data.pak”,因为它文件体积最大,至此便找到了资源包的位置。


    解包资源

    我的第一反应是想,它是不是通用的压缩格式,只不过改了个后缀而已?所以我就直接尝试用7-zip打开它,居然是可以正常打开的,那它就是通用压缩格式。



    尝试解压的时候提示需要密码,那密码肯定是会存在游戏中的,而且是在尝试加载资源包的时候会用到这个密码。既然本质是网页项目,那么加载资源包的逻辑大概会存在main.js里的,顺藤摸瓜接着找就好了

    然后在翻阅main.js的时候我先看到了这两个函数:

    1. function stringEncrypter(str) {
    2.     if (typeof str != 'string') {
    3.         return str;
    4.     };
    5.     var strEncrypted = '';
    6.     var ccode = 0;
    7.     for (var i = 0; i < str.length; i++) {
    8.         ccode = str.charCodeAt(i);
    9.         strEncrypted += (String(ccode).length - 1 + String(ccode));
    10.     };
    11.     return strEncrypted;
    12. };
    复制代码

    这是一个针对字符串的加密函数,下面还有一个对应的解密函数我省略掉了,那么我要找的密码可能和这两个函数有关。

    稍微分析一下这个加密,加密过程是对输入的字符串逐字符遍历,取每一个字符的Unicode编码,计算其编码的长度减1,然后再与这个Unicode编码拼在一起,就是单个字符的密文。比如A的Unicode编码是“65”,“65”长度为2,减1为1,所以“A”加密就是“165”

    再往下是这样一个函数(有点长我就不直接展开了):

    那很明显了,资源包“data.pak”就是一个有密码的zip压缩包,中间读取资源那段用到的“options[RPGMakerMV.pKey]”也就是要找的密码相关内容了

    然后我就搜索“options[RPGMakerMV.pKey]”,定位到:

    1. options[RPGMakerMV.pKey] = RPGMakerMV.decompileKey(RPGMakerMV.packageKey)
    复制代码

    继续搜索“decompileKey”,找到了:

    1. RPGMakerMV.decompileKey = function name(key) {
    2.     key = key || '';
    3.     if (key == '') {
    4.         return '';
    5.     };
    6.     return stringDecrypter(window.atob(window.atob(key)));
    7. };
    复制代码

    核心其实就是“stringDecrypter(window.atob(window.atob(key)))”,然后继续搜索刚刚的“packageKey”,找到:

    1. RPGMakerMV.packageKey = window.packageKey || 'TWpFeU1qSXhNVEl5TVRBNQ==';
    复制代码

    那至此密文和解密方法都找到了,所以只需要用他写好的解密方法运行一下就ok了

    把如下代码丢给浏览器的F12控制台:

    1. function stringDecrypter(str) {
    2.     if (typeof str != 'string') {
    3.         return str;
    4.     };
    5.     var strDecrypted = '';
    6.     var ccode = 0;
    7.     var clength = 0;
    8.     for (var i = 0; i < str.length; i++) {
    9.         clength = Number(str[i]) + 1;
    10.         ccode = Number(str.substring(i + 1, i + clength + 1));
    11.         strDecrypted += (String.fromCharCode(ccode));
    12.         i += (clength);
    13.     };
    14.     return strDecrypted;
    15. };

    16. stringDecrypter(window.atob(window.atob('TWpFeU1qSXhNVEl5TVRBNQ==')));
    复制代码

    控制台就会返回运行结果:



    那这个“zpm”应该就是压缩包密码了,最后成功解压


    最后の碎碎念

    感觉搞到最后有点像解谜小游戏()但是最后稍微有点失望,因为作者为了省空间,只分别存了CG的差分部分,如下:



    原来还要自己拼.jpg

    我是强迫症晚期()准备找个时间把这些全拼一起,不然看着太难受了

    求大家点点评分点点追随!求求惹求求惹!


    本帖子中包含更多资源

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

    x

    评分

    参与人数 9血液 +3 追随 +9 堕落 +3 收起 理由
    wasdjk + 1
    tuouya + 1 努力惹~
    crabee + 1 + 1
    錾稠 + 1
    可靠的头孢 + 1 感谢分享!
    hdac666 + 1
    OKLOR + 1 + 1 努力惹~
    jasperch + 1
    talkspecial + 3 + 1 + 1

    查看全部评分

    回复

    使用道具 举报

    没有梦想的咸鱼史莱哲林飘飘终章变骚喷雾雷霆晶球灵光补脑剂附魔金苹果神秘商店贵宾卡茉香啤酒

      Rg26 发表于 9 小时前 | 显示全部楼层 <
      回复

      使用道具 举报

      缘起星空

        you9632587 发表于 6 小时前 | 显示全部楼层 <
        回复

        使用道具 举报

        炼金之心『随时随地开启!』破损的旧书『随时随地开启!』雪王的心脏人鱼之泪苏格兰圆脸胖鸡[Pro Max]位面引航器不曾寄出的信件幽灵竹筒

          凯诺斯 发表于 5 小时前 | 显示全部楼层 <
          回复

          使用道具 举报

            whitemoss 发表于 4 小时前 | 显示全部楼层 <
            回复

            使用道具 举报

            红龙幼崽收到情书捡到了肥皂牧羊人驯化黑龙幼崽GM論壇勛章眼镜蛇图腾

              jasperch 发表于 4 小时前 | 显示全部楼层 <
              回复

              使用道具 举报

              腐化龙幼崽瑞雪兆丰年,生灵万物新驯化红龙幼崽

                Sloanx 发表于 4 小时前 | 显示全部楼层 <
                楼主牛逼呀 反正我是不会的 还没那么深造 and一看楼主就知道 楼主喜欢这个虎(忘记名字了)
                回复

                使用道具 举报

                  寂寥样子 发表于 4 小时前 | 显示全部楼层 <
                  回复

                  使用道具 举报

                  揄人者冠冕驯化红龙幼崽瑞雪兆丰年,生灵万物新神龙之下猎鹰图腾牧羊人香喷喷的烤鸡

                    Dodie 发表于 4 小时前 | 显示全部楼层 <
                    回复

                    使用道具 举报

                    業火死鬥不舍的挽留黄金树的恩惠实现梦想官复原职裸体克里斯双向圣杯:焕然意志史莱姆牧场不朽之恋男巫之歌

                      scfy 发表于 4 小时前 | 显示全部楼层 <
                      虽然需要自己拼挺麻烦的,但是确实是个省空间的好办法,大家都不想自己的空间被像微信一样的玩意给吃完
                      回复

                      使用道具 举报

                      暮狼归来红莲狂潮星尘龙混血王子森林羊男鎏彩万幢禽兽扒手前身

                        志城 发表于 3 小时前 | 显示全部楼层 <
                        回复

                        使用道具 举报

                        牧羊人寻觅

                          hdac666 发表于 3 小时前 | 显示全部楼层 <
                          回复

                          使用道具 举报

                            可靠的头孢 发表于 3 小时前 | 显示全部楼层 <
                            回复

                            使用道具 举报

                            鎏彩万幢男巫之歌女巫之路虚空之海的鲸業火死鬥实现梦想官复原职缘起星空Zootopia丹雀衔五穗,人间始丰登

                              娱乐法师火布偶 发表于 3 小时前 | 显示全部楼层 <
                              回复

                              使用道具 举报

                              寻觅堕落之舞【新手友好】昆進森林羊男山猫图腾眼镜蛇图腾GM論壇進階勛章

                                MemesMak 发表于 3 小时前 | 显示全部楼层 <
                                回复

                                使用道具 举报

                                牧羊人

                                  heluhong0210 发表于 3 小时前 | 显示全部楼层 <
                                  回复

                                  使用道具 举报

                                  腐化龙蛋黑龙幼崽揄人者冠冕牧羊人火玛瑙GM論壇初心者勛章

                                    Lightsnack 发表于 3 小时前 | 显示全部楼层 <
                                    回复

                                    使用道具 举报

                                    牧羊人

                                      mozhu 发表于 3 小时前 | 显示全部楼层 <
                                      他里面的背景不是同一个图片叠加氛围,或者说渲染条,而是单纯的晚上一个图片,早上一个图片,属于是我没想到的解决逻辑了(笑)
                                      回复

                                      使用道具 举报

                                      寻觅海螺号角章鱼小丸子星芒戒指奇怪的宝箱土豆开花了啊!菊花开了!

                                        錾稠 发表于 2 小时前 | 显示全部楼层 <
                                        回复

                                        使用道具 举报

                                        山猫图腾用过的粪桶特殊-家园卫士Ⓡ眼镜蛇图腾特殊-家园卫士Ⓛ牧羊人【新手友好】昆進

                                          我的肉 发表于 2 小时前 | 显示全部楼层 <
                                          回复

                                          使用道具 举报

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

                                          本版积分规则

                                          关闭

                                          站长公告上一条 /1 下一条

                                          文字版|手机版|小黑屋|GameMale

                                          GMT+8, 2026-4-17 13:37 , Processed in 0.228708 second(s), 143 queries , Redis On.

                                          Copyright © 2013-2026 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表