[转帖]反编译Silverlight应用
发表于:
2009-12-15 10:17
8571
注意是转帖自"博客堂"!! 感谢作者ghj1976
其实反编译Silverlight 应用非常容易,下面就以反编译 http://www.joerassic.ch/ 的街机对战的Silverlight应用为例来说明这个过程。http://www.joerassic.ch/ 有一个非常酷的,用Silverlight开发的恐龙街机对战的游戏,下面是一副截图。
下载Silverlight XAP文件:
由于 Silverlight 是在客户端浏览器中执行的,我们下载了 Silverlight 文件后,也就得到了完整的 Silverlight 执行文件。
当我们用 Internet Explorer 浏览器浏览了 Silverlight 应用后, 在Internet Explorer的临时文件夹中就有这个Silverlight的文件。我们可以直接来使用这个文件作为反编译的基础。Silverlight的文件是一个 xap 文件, 其实它就是一个 zip 文件。有关这部分的详细信息可以参看我之前写的博客: Silverlight项目中的文件 。
Internet Explorer 的临时文件夹可以通过下面菜单途径到达:
工具 --》 Internet 选项 打开 Internet 选项 设置Tab页。如下图:
在其中的 浏览历史记录中, 我们点击“设置” 按钮,进入了 Internet 临时文件和历史记录设置窗体,如下图:
在这个窗体中我们点击“查看文件”按钮,就可以进入临时文件目录。
临时文件目录下文件很多,由于silverlight 应用默认是 xap后缀的文件,我们通过过滤只看这类文件,如下图:
我们把上述 xap 文件另外复制一个目录,作为我们进一步反编译的基础。
注意,这个复制应该在 Internet Explorer 没有关闭 http://www.joerassic.ch/ 页面之前,同时Silverlight 加载之后进行,否则就会报错误:
我们把 xap 文件名的后缀修改为 zip , 然后解压缩到一个目录下。以这个街机对战的为例,解压缩后文件如下图,有关这些文件的用途,请参看我之前的博客:Silverlight项目中的文件 :
反编译:
由于Silverlight 2.0 以后, 大家几乎都是用 .net 来开发Siverlight 应用,我们也就可以使用 Reflector 打开其中的dll文件。
我们用 Reflector 打开 JurassicCombat.dll 文件后,查看Dll 反编译后的源代码很简单,如下图:
查看对应的XAML文件,则需要查看它的资源文件,如下图:
选中一个资源,然后右击,会出现“Save As” 菜单项,把这个资源另存在一个目录下,打开就可以看到 Xaml文件了, 当然上面资源文件中的图片文件,字体文件都可以看到。这个街机对战的恐龙动画特效文件并没有被编译到 Xap 文件中,而是另外有文件。我们在 Fiddler 辅助下就可以分析到这些图片文件的地址,这里使用的是 http://www.joerassic.ch/ClientBin/images.zip http://www.joerassic.ch/ClientBin/images2.zip 的图片对应不同等级的对战特效。由于这些图片文件的巨大, 我们在访问 http://www.joerassic.ch/ 的初始化时间才需要这么久。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!