最近玩手机应用,听说创新工厂有个豌豆荚,然后到官方往去下载,结果发现运行要求那里写着系统要求.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代码的保护不容忽视,在做开发时要学会保护软件。