解码的套路(一) 您所在的位置:网站首页 Asset翻译 解码的套路(一)

解码的套路(一)

#解码的套路(一)| 来源: 网络整理| 查看: 265

本篇文章我将分享一下自己对于解码的研究心得。

解码在黄油中是比较小众的一个概念,有些人玩了一大堆黄油到头来可能连游戏能否解码都不清楚,并且即使知道能解码也找不到补丁的获得途径(本人亲生经历)。本着对解码的找不到补丁的无奈,于是自己从零研究解码终于研究出了一套方法。

本人每解码一款游戏后都会适当做下纪录,以后我将会以文章形式分享一些典型的案例。

以前的文章分享了封呪姫的一些较为重要的数据解密。

也提到过,Unity游戏解码的两种方式。

这两种解码方式各有优势,也有缺点。举个栗子:

1.对于一款资源文件全部打包的黄油来说,解码资源是比较坑爹的,一套流程下来不仅步骤繁琐,上传补丁直接就是资源包(对于一些体量大的游戏来说,就是下了一个本体,这与补丁的便利小巧矛盾)。

2.对于一款经常小更新的黄油来说,代码层面的解码就比较坑,即使能用,也会把游戏代码降维(兼容性极差)。不过听说可以hook但是要插件,这对我这种小白来说搞的太麻烦了。

本篇先介绍一下资源层面的解码。(只针对一款游戏,不做拓展)

封呪姫是2D游戏,通常来说2D游戏的码就是一张算法形成的马赛克贴图(原CG上马的游戏,不要考虑)。那么思路就很明确,我只要在资源文件中找到马赛克的材质Material文件,或者Material关联的着色器Shader然后干他(不是删)就行了。

那么问题来了,这马赛克资源去哪里找?

非常惭愧,本人能力有限,没有找到好的方法。是资源全用AssetStudio打开看一遍。

AssetStudio是专门针对unity游戏的资源解包工具。(仅解包)

游戏目录下:

resources.assets    sharedassets0.assets    globalgamemanagers.assets

这三个文件,依次用AssetStudio查看,也可以直接打开文件夹,全部一起看。

resources.assets

可见resources.assets下全是一些shader文件,这个先忽略,直接找shader太难了,代码又不是自己写这要是一个个看下去直接N年都没了。(直接黑人抬走)

下一个

globalgamemanagers.assets

大致看了一下,因为globalgamemanagers.assets存的都是一些总的信息,马赛克是针对某个具体场景的所以一般不会这这里保存。(抬走)

就剩最后一个sharedassets0.assets,提醒一下通常解多了之后直接找sharedassets0.assets文件先看了再说。

由于AssetStudio这款软件的缺陷,(不能正确显示资源,无法修改资源)

就不墨迹用AssetStudio看了,直接用AssetBundleExtractor打开sharedassets0.assets

~~温馨提示:所有工具Github上都有自己找~~

AssetBundleExtractor是Unity资源的爸爸,作者的噩梦,可上天入地,无所不能。

sharedassets0.assets

打开后大致扫了一眼,第二个Material文件这名字是不是暴露了,Mosaic就是马赛克

头号可疑对象,直接干他试试直接‘导出转储’,这里不能‘导出原始’,原始文件导出后没有任何意义(改不了)。当然也可以先点‘查看数据’看个大概。

找到Matrial之后如何改就需要对这种的理解了。

最先注意的是:PPtr m_Shader

这边是Material关联的shader,可以直接改它,这里说一下思路:找到对应的shader,把它的功能无效就行,说起来简单直接改,不如找个没用的shader替换来的实际。

这里着重看一下

int m_CustomRenderQueue = 3000;

通常理解是渲染顺序,这个值越小越早被渲染,(说人话就是渲染早了,会被后渲染的图层覆盖,对于马赛克来说就是失效),直接改

int m_CustomRenderQueue = 0

具体操作:

‘导出转储’——用文本打开——改它保存——‘导入转储’——保存——替换到原目录下——Over

当然这并不是万能的,有些游戏改这个是无效的,为什么无效呢?根据我的判断。可能是shader的限制,没学过Unity中shader和material的优先级。到那个时候改shader通常是有效的,具体怎么改,以后有案例了在写。

虽然看上去这个解码步骤挺简单的,但是如果是初次接触,并不会这么容易,很多东西要去一个个试,并不能一针见血。上面的内容都是在一大堆的试错之后总结的比较简单的过程。

最后就是看看成果,是不是真的解码了,直接上图(才怪)

下篇文章将详细的讲解一下代码层面的解码,这类教程和经验,网上几乎找不到,所以我将会写的比较详细,并且也会提到逆向中遇到的一些头痛的问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有