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

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

dnSpy逆向一款不知名黃油的經(jīng)驗(一)

2020-06-04 19:30 作者:Anicca丶Y  | 我要投稿


不久前玩到一款黃油封呪姫,說真的這游戲做的還是挺好的,去掉H的部分完全能夠作為一款優(yōu)秀的策略游戲.

黃油終歸逃不過老三樣(漢化,存檔,CG解鎖)甚至還有比較魔幻的"解碼".

以前逆向過一些黃油,拿這款出來寫經(jīng)驗是因為這游戲在黃油里是比較罕見的對數(shù)據(jù)加了密的,雖然比較簡單.

作為初次寫這類文章,文章將以????[存檔 ------ 漢化 ------- "解碼"(可能不講,完全看運氣)]????提供一定的思路._.

這款游戲是用unity制作的,不管三七二十一,解密就上神器dnSpy.

首先游戲的存檔位置不多說,桌面左上角的用戶文檔里,隱藏文件夾AppData隨便逛一下就找到了.發(fā)現(xiàn)文件夾里包含save0.sol,save1.sol,sys.sol等等文件,save0是自動存檔生成,save1對應游戲里的第一個存檔,sys則是系統(tǒng)存檔.在游戲中這三個存檔是比較常見的.

直接打開這三個文件,不用多說,肯定一堆亂碼,哪有這么小白的作者會把存檔明文保存的.

因為是unity開發(fā)的作為一個專搞unity游戲的逆向小白,直接去找游戲文件夾下Game_Data\Managed路徑里的Assembly-CSharp.dll文件,unity開發(fā)的游戲的腳本基本全在這個文件內.

直接二話不多說拖到dnSpy里看看能不能逆向,結果當然不出所料,基本的代碼全都被逆向出來了,但是比較頭痛的是代碼中一大堆不明所以的字符串編碼,這方面真的是小白,可能是加了混淆啥的反正代碼一大堆亂七八糟的,直接上個圖

雖說這是逆向中的障礙,但是這點障礙完全不影響我去看代碼呀,直接嘗試去搜索一下有關存檔的方法,一般來說當然就是save啥的,那就直接搜索save再說.結果搜出來一大堆,當然作為一個有精驗的小白來說,能搜出來是好事,搜不出來才頭痛好伐.

考慮到這游戲有三種存檔保存類型,當然可想而知方法也會有很多,在列表里隨便看看方法的名稱可能會有點思路啥的.

結果直接找到個SaveEncString方法,字面理解不就是存檔字符串加密的方法嗎。

猜歸猜點進去看看跟實際個圖,

一萬個草泥馬策馬奔騰,我去這代碼真tm牛逼(不懂是怎么搞出來的)。

不過可讀性還是挺高的,畢竟再怎么亂終究只是方法名而已,看著長就是個紙老虎。

代碼第一行清晰明了,就是打開了一個文件唄,還搞得花里胡哨的

第二行 明著告訴你把傳進來sJs這個字符串加密后給到array這個數(shù)組

當然我們解密找的就是這進行加密的方法。直接點進EncryptData這個方法

可見這游戲中的一些方法名都是這么一長串的編碼,然而還是不影響,正所謂心中無碼便是步兵。

第一行,看上去亂是因為,這里面方法套方法套了好幾層,看后面的小括號個數(shù)就能知道。

做一下簡單的簡化處理后得知,方法名用A,B,C替換掉了

svdata = GSys.A(GSys.B(GSys.GetMd5Hash(GSys.A(svdata, <Module>.C<string>(2979640811u))), 0, 8), svdata);

GSys.B(GSys.GetMd5Hash(GSys.A(svdata, <Module>.C<string>(2979640811u))), 0, 8)+svdata

GSys.GetMd5Hash(svdata+"R").Substring(0,8)

總結:(svdata+"R")作為整體得到一串Md5值的前八位,然后得到的8位Md5+svdata得到新的字符串并賦值給svdata。

可見這存檔還加md5驗證,還故意是加個R后在算md5的,老狐貍的呀

第二行沒啥意思就是把svdata以UTF-8存到數(shù)組里方便進行操作.

然后到了最關鍵的第三行的for循環(huán),這不是赤裸裸的加密了嗎?????

看關鍵語句:array2[num] ^= 239

就是每個字符跟239異或后得到個新的值呀,也就是說這加密就TM僅僅是個異或加密

那解密簡單呀,異或加密是可逆的,也就是說這串代碼再跑一遍就能解密了。

因為不會寫C#,只會讀

所以寫個python代碼跑一遍看看,具體就不貼了,反正上面圖里的照搬就行。直接上個解密后的文件截圖。?

sys.sol
save.sol

破解成功!!!!!!!!!

當然上面的解密過程僅僅只是把原文件,用第三行的異或算法跑了一遍,并沒有考慮的第一行代碼的驗證過程,所以打包的時候簡單的異或是不行的.具體要如何打包就參考第一行的代碼解析就可以了.

dnSpy逆向一款不知名黃油的經(jīng)驗(一)的評論 (共 條)

分享到微博請遵守國家法律
瓮安县| 依安县| 天祝| 甘泉县| 尼木县| 肇东市| 布尔津县| 信宜市| 江达县| 远安县| 景德镇市| 常山县| 海兴县| 天柱县| 肇源县| 奈曼旗| 永宁县| 宝丰县| 常山县| 大竹县| 铁岭市| 泰来县| 柳江县| 静宁县| 黄龙县| 璧山县| 东平县| 靖西县| 双江| 临夏市| 宕昌县| 汪清县| 贺州市| 离岛区| 繁昌县| 左云县| 普宁市| 宁化县| 江油市| 沽源县| 苍溪县|