1. 程式人生 > >記錄U3D逆向Assembly-CSharp-firstpass.dll解密

記錄U3D逆向Assembly-CSharp-firstpass.dll解密

原創:狂神說 

----未經授權禁止止轉載-----

一個愛鑽研程式碼的低端碼農!學習了這麼久,以後工作開始不定時分享給大家經驗~

最近一直想逆向一個自己一直在玩的手遊

就把其中遇到的一些問題記錄下來分享給大家吧

使用到的工具

APKIDE
.NET Reflector
IDApro

IDEA -->用java寫的解密演算法,嘻嘻.

主要就是尋找解密演算法比較麻煩

怎麼判定它是Unity遊戲呢,看這個目錄assets\bin\Data\Managed

可以看出來是用unity3D開發的

Assembly-CSharp-firstpass.dll遊戲的程式碼就是在這裡,是用C#開發的。
用Reflector軟體開啟,結果發現打不開,是加密的

於是乎在apk壓縮包找到lib\armeabi-v7a\libmono.so

用IDA開啟,定位到mono_image_open_from_data_with_name方法

注意:這裡只能32位的才能開啟,64位進不去,(至少我的是這樣)

找到這裡的解密演算法.

然後就開始寫解密演算法啦,這裡我用JAVA寫的

(注:自己寫兩個函式,將檔案成位元組陣列然後就可以進行解密了.)

將Assembly-CSharp-firstpass.dll轉換為位元組檔案

進行解密,然後輸出就搞定了.

然後我們把輸出的檔案匯入Reflector

好啦,解密成功!

到這裡我們就可以進行下一步的原始碼分析了.敬請期待!

看完有用記得動動小手收藏關注哦~