最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

解碼的套路(一)

2020-06-20 08:19 作者:Anicca丶Y  | 我要投稿

本篇文章我將分享一下自己對于解碼的研究心得。

解碼在黃油中是比較小眾的一個(gè)概念,有些人玩了一大堆黃油到頭來可能連游戲能否解碼都不清楚,并且即使知道能解碼也找不到補(bǔ)丁的獲得途徑(本人親生經(jīng)歷)。本著對解碼的找不到補(bǔ)丁的無奈,于是自己從零研究解碼終于研究出了一套方法。

本人每解碼一款游戲后都會(huì)適當(dāng)做下紀(jì)錄,以后我將會(huì)以文章形式分享一些典型的案例。

以前的文章分享了封呪姫的一些較為重要的數(shù)據(jù)解密。

也提到過,Unity游戲解碼的兩種方式。

這兩種解碼方式各有優(yōu)勢,也有缺點(diǎn)。舉個(gè)栗子:

1.對于一款資源文件全部打包的黃油來說,解碼資源是比較坑爹的,一套流程下來不僅步驟繁瑣,上傳補(bǔ)丁直接就是資源包(對于一些體量大的游戲來說,就是下了一個(gè)本體,這與補(bǔ)丁的便利小巧矛盾)。

2.對于一款經(jīng)常小更新的黃油來說,代碼層面的解碼就比較坑,即使能用,也會(huì)把游戲代碼降維(兼容性極差)。不過聽說可以hook但是要插件,這對我這種小白來說搞的太麻煩了。

本篇先介紹一下資源層面的解碼。(只針對一款游戲,不做拓展)

封呪姫是2D游戲,通常來說2D游戲的碼就是一張算法形成的馬賽克貼圖(原CG上馬的游戲,不要考慮)。那么思路就很明確,我只要在資源文件中找到馬賽克的材質(zhì)Material文件,或者M(jìn)aterial關(guān)聯(lián)的著色器Shader然后干他(不是刪)就行了。

那么問題來了,這馬賽克資源去哪里找?

非常慚愧,本人能力有限,沒有找到好的方法。是資源全用AssetStudio打開看一遍。

AssetStudio是專門針對unity游戲的資源解包工具。(僅解包)

游戲目錄下:

resources.assets????sharedassets0.assets????globalgamemanagers.assets

這三個(gè)文件,依次用AssetStudio查看,也可以直接打開文件夾,全部一起看。

resources.assets

可見resources.assets下全是一些shader文件,這個(gè)先忽略,直接找shader太難了,代碼又不是自己寫這要是一個(gè)個(gè)看下去直接N年都沒了。(直接黑人抬走)

下一個(gè)

globalgamemanagers.assets

大致看了一下,因?yàn)間lobalgamemanagers.assets存的都是一些總的信息,馬賽克是針對某個(gè)具體場景的所以一般不會(huì)這這里保存。(抬走)

就剩最后一個(gè)sharedassets0.assets,提醒一下通常解多了之后直接找sharedassets0.assets文件先看了再說。

由于AssetStudio這款軟件的缺陷,(不能正確顯示資源,無法修改資源)

就不墨跡用AssetStudio看了,直接用AssetBundleExtractor打開sharedassets0.assets

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

AssetBundleExtractor是Unity資源的爸爸,作者的噩夢,可上天入地,無所不能。

sharedassets0.assets

打開后大致掃了一眼,第二個(gè)Material文件這名字是不是暴露了,Mosaic就是馬賽克

頭號可疑對象,直接干他試試直接‘導(dǎo)出轉(zhuǎn)儲(chǔ)’,這里不能‘導(dǎo)出原始’,原始文件導(dǎo)出后沒有任何意義(改不了)。當(dāng)然也可以先點(diǎn)‘查看數(shù)據(jù)’看個(gè)大概。

找到Matrial之后如何改就需要對這種的理解了。

最先注意的是:PPtr<Shader> m_Shader

這邊是Material關(guān)聯(lián)的shader,可以直接改它,這里說一下思路:找到對應(yīng)的shader,把它的功能無效就行,說起來簡單直接改,不如找個(gè)沒用的shader替換來的實(shí)際。

這里著重看一下

int m_CustomRenderQueue = 3000;

通常理解是渲染順序,這個(gè)值越小越早被渲染,(說人話就是渲染早了,會(huì)被后渲染的圖層覆蓋,對于馬賽克來說就是失效),直接改

int m_CustomRenderQueue = 0

具體操作:

‘導(dǎo)出轉(zhuǎn)儲(chǔ)’——用文本打開——改它保存——‘導(dǎo)入轉(zhuǎn)儲(chǔ)’——保存——替換到原目錄下——Over

當(dāng)然這并不是萬能的,有些游戲改這個(gè)是無效的,為什么無效呢?根據(jù)我的判斷??赡苁莝hader的限制,沒學(xué)過Unity中shader和material的優(yōu)先級。到那個(gè)時(shí)候改shader通常是有效的,具體怎么改,以后有案例了在寫。

雖然看上去這個(gè)解碼步驟挺簡單的,但是如果是初次接觸,并不會(huì)這么容易,很多東西要去一個(gè)個(gè)試,并不能一針見血。上面的內(nèi)容都是在一大堆的試錯(cuò)之后總結(jié)的比較簡單的過程。

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

下篇文章將詳細(xì)的講解一下代碼層面的解碼,這類教程和經(jīng)驗(yàn),網(wǎng)上幾乎找不到,所以我將會(huì)寫的比較詳細(xì),并且也會(huì)提到逆向中遇到的一些頭痛的問題。

解碼的套路(一)的評論 (共 條)

分享到微博請遵守國家法律
沙坪坝区| 会东县| 惠来县| 甘德县| 万荣县| 湘潭市| 惠来县| 龙海市| 建宁县| 沙雅县| 和龙市| 陇西县| 岱山县| 棋牌| 合水县| 岳普湖县| 西畴县| 兴安县| 平罗县| 昭觉县| 兰溪市| 博罗县| 剑川县| 沭阳县| 巴中市| 高阳县| 珠海市| 海宁市| 仪陇县| 宜宾县| 龙川县| 玉溪市| 西丰县| 曲阳县| 理塘县| 偃师市| 青冈县| 互助| 平昌县| 蒲城县| 无极县|