最近在使用AnyChartStock的图表,功能很强大,但下载过来是有水印的,虽然网上也有很多破解无水印的版本,但基本都是AnyChart的,AnyChartStoc的几乎没有。所以自己尝试着去除水印。
首先想到的是用Sothink SWF Decompiler或类似的反编译工具来反编译,然后再用flash来生成swf文件,这个方法首先要装这两个软件,另外Sothink SWF Decompiler找来找去找不到一个破解版,只好有试用版本,能查看代码,发现产生水印是在一个叫'StockTrail'的类里加入的,具体代码如下:
public function StockTrial(param1:Boolean=true) { this.doRenderBitmap = param1; var _loc2_:TextFormat = new TextFormat(); _loc2_.font = "Verdana"; _loc2_.size = 60; var _loc3_:TextField = new TextField(); _loc3_.text = "AnyChartStock Trial Version"; _loc3_.autoSize = TextFieldAutoSize.LEFT; _loc3_.setTextFormat(_loc2_); var _loc4_:BitmapData = new BitmapData(_loc3_.width,_loc3_.height,true,0); _loc4_.draw(_loc3_); this.trialBitmap = new Bitmap(_loc4_); this.trialBitmap.alpha = 0.15; this.xmlFile = null; this.trialWidth = _loc3_.width; this.trialHeight = _loc3_.height; super(); }
上面红色的‘AnyChartStock Trail Version'就是水印的文字了。但是测试版本的反编译工具不支持导入成完整的fla文件,所以只好另想办法。
接着想到了是否可以直接修改swf的二进制文件来去掉水印文字,所以就用二进制文件查看器找开,找了半天也没找到AnyChartStock Trail Version的字样,看来没这么简单,所以就去了解了一下swf的文件格式,google了下,原来adobe提供了详细的格式说明,这个是链接。
对照格式说明,原来手头上的这个swf文件的主要内容是经过zlib压缩过的,难怪找不到文字。于是就按照格式把文件的前8个字节去掉,生成一个新文件,然后把这个文件内容进行解压缩,得到解压后的文件,再用二进制文件查看器去看时就找到AnyChartStock Trail Version的文字了,接着全部替换成空格,再压缩回去,最后把去掉的8字节加上,测试了下,大功告成,呵呵。
随便说下我用的二进制编辑工具,叫Bless,功能很强大。另外压缩和解压缩zlib使用的是openssl zlib 的方法。
最后分享该文件,欢迎下载。
AnyChartStock: http://pan.baidu.com/s/13PfL2
AnyChart: http://pan.baidu.com/s/1oqcuE