08月04, 2009

利用Delphi的Flash控件获取AS类信息

获取ActionScript 类信息的另类方法: 前一阵写了个提取 ActionScript 类中符号信息的脚本。算是可用。 用于混淆效果还行。

今天突然想到,在ActionScript中可以用

public function describeType(value:*):XML 
flash.util.describeType(KlassName)

获得类的详细信息:

  • 对象的类
  • 类的属性
  • 从类到其基类的继承树
  • 类实现的接口
  • 类的已声明实例属性
  • 类的已声明静态属性
  • 类的实例方法
  • 类的静态方法

(对于类的每个方法)名称、参数的数量、返回类型和参数类型 这样,就可以写一个类,将其他类的信息都打印出来。 但是,ActionScript工程中无法操作本地文件,只能trace到调试窗口。

于是研究了一下,发现可以利用 AS的 fscommand 将信息以字符串的形式传出来。

于是用Delphi将Flash*.ocx导入成可视化空间。然后响应

OnFSCommand(Sender:Object,const command,args:WideString)

事件。此时有出问题了,Flash的ActiveX控件必须指定影片

ShockwaveFlash.Movie:="c:	est.swf"

并且会将这个swf以资源的形式嵌入exe文件中。

Google了一下,终于找到了一个对 TShockwaveFlash的包装类 TShockwaveFlashEx

这个类将指定的swf文件读入内存,之后再赋给 Movie。

这样就可以写一个程序将swf中的信息保存到指定文件了:

c:> swfputs.exe c:	est.swf c:a.xml

下面是a.xml的部分内容

图一

这样用Ruby的Hpricot解析这个xml获得其中信息就很简单了

本文链接:http://aztack.wang/post/another-way-to-get-as-class-info.html

-- EOF--

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。