記錄U3D逆向Assembly-CSharp-firstpass.dll解密
阿新 • • 發佈:2019-02-19
原創:狂神說
----未經授權禁止止轉載-----
一個愛鑽研程式碼的低端碼農!學習了這麼久,以後工作開始不定時分享給大家經驗~
最近一直想逆向一個自己一直在玩的手遊
就把其中遇到的一些問題記錄下來分享給大家吧
使用到的工具
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
好啦,解密成功!
到這裡我們就可以進行下一步的原始碼分析了.敬請期待!
看完有用記得動動小手收藏關注哦~