【怀旧向】逆向提取游戏BGM

发布于 2018-11-25  19 次阅读


引子

对于一款游戏而言,也许会有引人入胜的剧情让你留下深刻印象,也许会有一些发生在游戏内外的故事让你无法忘怀。很多的游戏伴随我们成长,也见证了许多有意思的事情。有时候,耳畔响起一段旋律,你会突然回忆起曾经的时光,回忆起当时这些游戏带给你的快乐。人类对音乐就比较敏感,这些BGM,便成为了我们记忆的承载,带着我们回到过去,又回到现在。
在十多年前,大概是我上小学到初中的时候,一款益智游戏流行了起来,那便是连连看。
当时的计算机硬件普遍不高,这样一款玩法新颖,体积小的游戏,只有几百kb,很容易被拷贝在一张3.5英寸软盘中流行起来。当然到了后面各种各样的连连看铺天盖地的开发出来,如果你学习编程,那么可能自己都做过这种小游戏的Demo。
最经典的版本,当然是这款连连看3了,后面比较流行的是连连看5,其他的连连看这里不做讨论,毕竟不是最正宗的版本。当年不太了解,现在才知道,这款游戏是从弯弯那边传过来的,现在还有了 官网
连连看3
当然当年咱的电脑的系统版本还是winXP或者win2000,想要复古的可以试试修改Windows主题风格2333
修改Windows主题
怀旧版连连看窗口
这款游戏有多么经典就不多说了,其BGM也是非常的经典,基本上是当时的流行曲目,当然由于采用了MIDI音乐,才能保持这么小的游戏体积。但也正是因为是MIDI音乐,所以肯定和原版有一定的区别。我能够回忆起来了,只有《Making Love out of Nothing at all》《真夏の果実》(学友翻唱版本叫做《每天爱你多一点》,原版是南方之星,当然邓丽君也唱过日语版的),《新不了情》《吻别》等等,太多的要么记不清要么就不知道是什么歌了。不过就算知道了原曲,听着的感觉也和MIDI音乐不大一样,因此我便想,网上有没有这些MIDI音乐的资源呢?好吧找了一圈没有找到,好在咱是学计算机的嘛,提取一个十多年前游戏的资源应该不成什么问题。当然,这里提取资源只是作学习交流,并不是支持大家用技术来干一些不道德的事情。

OK,废话就不多说了,现在开始我们今天的干货。

首先,我们需要了解一下一些基础知识。
Windows平台的可执行文件是exe格式的。我们一般编写的C、C++、JAVA等程序,经过编译链接,生成的一般是dlljar文件。因此exe是通过一个将程序集和资源打包在一起的文件。而一般来说,这样一个打包文件不是特别安全,比如资源就能被我们轻易地提取出来(雾),程序容易遭到修改,比如植入一些病毒啊啥的,因此需要加上一层保护壳,也就是俗称的加壳(当然也有一些病毒文件,如木马通过加壳来绕过安全软件的检测)。至于这个具体是怎么工作的,有哪些壳,展开来说就太多了,这里限于篇幅,感兴趣的可以自行了解下。
因此我们现在的步骤非常明确,就是先下载游戏,得到一个exe游戏文件,通过去壳得到最原始的exe包,然后一般情况下就能为所欲为地提取资源了。
这里的这种方法仅限于exe资源提取,现在很多的游戏或软件已经不是这么简单的操作了,很多资源都是另外加密存储的。比如像连小学生都会使用的Unity引擎(雾),它的资源就不在exe中,而是在Data目录下,这种解包方法我们这里不做讨论,之后有时间可以讲讲,网上也有相关教程可以自行了解。

下载一个连连看3的游戏压缩包,得到了Kawai.exe文件(现在才发现这个连连看叫做kawai连连看...可爱么?可能口袋妖怪是挺可爱的,ピカチュウ かわいいよ!)
然后我们需要一个工具来查看这个exe文件是通过什么方式加壳的,因为加壳方式有很多种,需要使用对应的方式去去壳,就和加密一样。
查看的工具也有很多,这里我们使用Exeinfo PE
使用方式非常简单,将需要查看的exe文件拖入工具中就OK了
exeinfo
这里我们能够非常清楚地看见kawai.exe是以aspack的方式来进行加壳的。
因此我们需要一个工具来去壳,对于aspack,我们可以使用AspackDie这个工具,非常简单好用
打开直接选择需要去壳的exe文件
去壳成功对话框
看见这样的对话框,就说明去壳成功了

去壳成功后,我们就得到了最干净的exe包文件,相当把它的包装完全拆开,可以为所欲为了。
我们随便使用一款可以提取exe资源的工具就好,这里我使用的是Resxplor
通过这个工具打开我们刚刚去壳后的程序Unpacked.exe便可以非常清楚地看到所有的资源了。
查看exe资源
现在就可以把资源提取出来,这里我将MIDI目录下的所有资源都提取了出来,并且可以正常播放
播放MIDI
之后还可以导入到Fl studio进行修改和查看了,非常棒

这次我们通过简单的操作(基本上都是使用现成的工具,不用手敲代码,也不用16进制查看器去手动修改地址),就得到了一个游戏的资源文件。从一个方向上来说,我们得到了想要的音乐文件,能够好好的回味一下经典;从另外一个方向上来讲,作为程序/游戏开发者,我们自然也不大希望自己的程序/游戏会被他人破解,提取资源。特别是对于游戏来说,美术和音乐基本上就是它的灵魂了。因此我们在进行开发的过程中也要思考如何用更好地方式来保护好自己的作品。当然开源软件咱不这样,我个人也非常支持开源精神,这样技术才能更好地发展,这里只针对商业软件和需要保证程序完整不被他人修改的情况,比如游戏。

讲到最后呢,可能大家对逆向提取资源已经有了一定的认识,这里我只分享技术,最终提取的文件不做分享,授人以鱼不如授人以渔嘛。同时文中提到的各类工具,随便找找就能找到。毕竟都能自己提取文件了,那就肯定不要做伸手党了对吧23333

Comments


来自像素世界的代码家,创造第九艺术!