最近玩手機應用,聽說創新工廠有個豌豆莢,然后到官方往去下載,結果發現運行要求那里寫着系統要求.net 2.0,一見到這個就高興了,原來用.net做桌面應用的軟件還是不少的,而且可能還可以逆向看部分代碼。
裝完豌豆莢,到安裝目錄里一看就看到幾個關鍵的動態庫了,其實豌豆莢用到了許多第三方開源庫。就目前我知道的,有以下幾個:
1.ffmpeg(http://ffmpeg.org/)大名鼎鼎的視頻編碼解碼庫,,豌豆莢在應該是用來做視頻格式轉換的,從幾個dll的名稱就可以看出
2.WebKit瀏覽器內核,豌豆莢是跟其它第三方應用市場合作的,基本上是通過web展示的,所以使用了WebKit的.net版本,具體可 看http://github.com/webkitdotnet
3.用到了C#壓縮組建 SharpZipLib,具體可以自行google
4.JavaScriptCore,javascript解析引擎,其實是WebKit的javascript引擎
5.Json.Net,就一Json的.net實現
接着對豌豆莢進行逆向,使用Reflector.exe逆向結果顯示已經針對該工具加過殼,我一直從事.net應用程序的開發,對.net的保護常識還是知道的,因為我們的軟件也需要保護。Reflector.exe不行最多就是換個逆向工具嘛,使用ILSpy把豌豆莢一拖進去,源碼自然全部就出來了,結構如圖

,只是由於使用了加殼和混淆工具,代碼的一些核心都是使用一些奇怪的字符替換,要想分析經過混淆后的代碼還是沒那么容易的,只能通過代碼邏輯來分析每個方法的作用了,至少可以看得到有些實現是什么做的。
本人只出於對於.net愛好的研究目的,做了簡單的分析,也做一個警示,.net代碼的保護不容忽視,在做開發時要學會保護軟件。
注意經測試該文章只針對豌豆莢1的版本,豌豆莢2以上版本已變成使用C++。希望是豌豆莢看到我的這篇文章之后改的,哈哈
