前提:
最近沉迷游戲開發,想着在不考慮上線的情況下和別人合作做幾款產品出來。正好碰上校賽,那就用手邊的一些小練習寫個re題。
打包項目的時候,如果不進行其他操作,項目中的cs代碼,甭管有用的沒用的,在打包時通通都會被打進Assembly-CSharp.dll中,運行的時候通過Mono調用。所以有一種保護項目的手段就是對導出工程的Assembly-CSharp.dll進行加密,加載的時候對之進行解密
wp:
這個題大部分精力放在寫游戲邏輯上了,所以沒有對項目進行保護措施。
直接進入GameTime!\GameStart_Data\Managed目錄找Assembly-CSharp.dll文件,扔進dnspy或者其他的.net反編譯工具里就能看到源碼。
看着文件挺多,但是絕大部分都是游戲邏輯,跟flag沒什么關系。
為了方便定位我直接把加密flag的cs代碼命名成帶有flag的文件,所以我們進入ScoreAndFlag里面看看:
代碼寫的比較丑,但邏輯還是能看明白的,比如ScoreAdd:
flag就是對“974”進行sha1的結果在來一次md5。
sha1最終返回的結果全部大寫,這些結果在傳給md5(),返回前三十位,就是flag了。
所以這個題出的一般,因為他只是個垃圾小游戲,不是題。
題目文件:
鏈接:https://pan.baidu.com/s/1dNlYwzzbDNHjcMo_2lUtiw
提取碼:kq1z
感謝閱讀。