Board

专注WPF、SWT、Java、TUIO、lua、电子白板软件研发、多点触摸算法、跟踪算法、视频会议、触摸一体机、红外触控、触摸框架、数字图像处理研究

导航

豌豆荚逆向分析

Posted on 2012-01-11 10:26  kodos  阅读(4962)  评论(17编辑  收藏  举报

  最近玩手机应用,听说创新工厂有个豌豆荚,然后到官方往去下载,结果发现运行要求那里写着系统要求.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++。希望是豌豆荚看到我的这篇文章之后改的,哈哈