`
prec
  • 浏览: 64621 次
  • 性别: Icon_minigender_1
  • 来自: 互联网
最近访客 更多访客>>
社区版块
存档分类
最新评论

[tamarin系列之2] avmshell命令行基础

阅读更多

    1、越过编译步骤

 

       我们接着说这个avmshell这个tamarin编译后最终生成的可执行文件。其实呢,当我们了解如何编译后,我们完全可以掠过这个恼人而有时又不成功的过程。

 

      我们从adobe的opensource站上弄下来flex-sdk, 并用ant编译

      svn checkout http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/ flex-sdk

      cd flex-sdk

      ant

 

      这样,我们就可以获得这个avmshell了:

             在flex-sdk/modules/asc/bin/linux下有avmplus_s

             在flex-sdk/modules/asc/bin/windows下有avmplus_s.exe

      这个avmplus_s与我们编译过的avmshell是相同的。

 

     我们再看看flex-sdk/modules/asc/bin/这个目录,你会发现很多有趣的东西,比如asc.exe就是我们上一章用到的asc.jar,而abcdump.exe就是反编译as3 swf的工具,这个反编译器的制作方法可以参考https://www.flashsec.org/wiki/Simple_AS3_Decompiler_Using_Tamarin页面下放的How to build an AS3 decompiler。

 

     而且flex-sdk/modules/asc/已经开放了源码,在src文件夹内,也就是说flex sdk\bin下的asc.exe的代码可以在这里参考。

 

     顺便提一下,在flex-sdk/modules/真的有不少好东西,可不光是asc哦,还有一个compiler, 这东西又是做什么的呢,看一下Readme发现,这个东西是用来编译mxml的,是mxmlc某种意义上的替代品,成品名叫flex-compiler-oem.jar。位置在flex-sdk/lib/flex-compiler-oem.jar。

     Readme里提供了用法:

  import flex2.tools.oem.Application;
  import java.io.*;

  public class Example
  {
      public static void main(String[] args)
      {
          try
          {
              Application application = new Application("example", new File("example.mxml"));
              Configuration c = application.getDefaultConfiguration();
              c.setLicense("compiler","0000-0000-0000-0000-0000-0000");
              application.setConfiguration(c);
              application.setOutput(new File("example.swf"));
              application.build();
          }
          catch (Exception ex)
          {
              ex.printStackTrace();
          }
      }
  }
example.mxml:

  <?xml version="1.0"?>
  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
      <mx:Label text="Hello World!"/>
  </mx:Application>

 

     然后javac -classpath ${flex.dir}/lib/flex-compiler-oem.jar Example.java,这样就可以了。     当然,这并不是真正的mxmlc,但是仍然可以使用,并且这个complier是有源码提供的哦。     至于modules下其他东西,请大家自己研究吧,再研究这个就跑题了。    2、avmshell命令行操作        上面我们简单介绍了asc工具的来历,它是专门编译AS3到.abc的工具。回忆一下上一章的图,一切都是从这个.abc开始的,为了简明,我们在前几章都假设都是用AS来生成.abc文件,而不是用ES4,因为ES4偶也没学好,呵呵,并且反正生成的.abc是一样的。之后我们可能会讲到另一个ES4的编译器,它叫esc。       首先,回顾上一章那个最简单的程序hello.as:       print(""Hello world")      它用ASC编译后成为hello.abc。      我们来看看avmshell的常用参数:      最常用的,我看就是-lifespan了。

	./avmshell -lifespan hello.abc
	输出
	Hello world
	Run time was 195 msec = 0.20 sec

    这跟time ./avmshell  hello.abc用法类似。

         另一个是./avmshell -Dverbose hello.abc ,则输出详细汇编信息。

     想要更狠更详尽的输出信息? 试试这个 ./avmshell -Dverbose_init hello.abc ,他将会把builtin的汇编信息一同输出,接下来就请看满屏幕飞的代码吧。

 

     其他常用参数

 

     -log 参数, 主要用于输出到文件。

     -Dtimeout,设置最多执行15秒

     -Dnoloops,设置禁止循环

     -Dnogc,不进行垃圾收集

     -Dgcstats,生成gc统计信息

     -Dstats ,显示优化信息统计

 

       大家可以逐个去试试,也可以去看源码部分。

 

     今天先到这里,接下来会继续深入tamarin的核心部分,如builtin内建包和shell包以及如何用native关键字融合本地C代码,进行JIT编译优化。       

分享到:
评论
1 楼 lidezhao07 2010-09-25  
能发我一份flex-sdk/modules/asc/ 的源码吗?我在adobe的opensource站上弄了很久,asc目录下的最是打不开,

我的邮箱 :lidezhao07@163.com

成分感谢。

最近在研究asc的编译过程,用jd反编译asc.jar看了过。不过有问题。希望看看原装正版的源文件。

相关推荐

    PyPI 官网下载 | tamarin-utils-0.14.5.tar.gz

    **PyPI 官网下载 | tamarin-utils-0.14.5.tar.gz** 这个压缩包文件`tamarin-utils-0.14.5.tar.gz`来源于Python的官方软件仓库PyPI(Python Package Index),它是一个包含众多Python库的地方,方便开发者下载和分享...

    tamarin-prover入门级介绍

    2. Tamarin Prover的主要特点 - **协议规格**:Tamarin支持用多集重写规则来指定协议,允许模拟非单调的可变全局状态和复杂的控制流(如循环)。 - **属性规格**:它使用一阶逻辑的受保护子集来定义属性,允许对...

    网络安全协议形式化分析验证工具Tamarin的用户手册

    5. **初始示例**:手册通过一个基础的公钥基础设施(PKI)模型,引导用户了解如何在Tamarin中建模加密原语、协议流程以及安全属性。 6. **协议建模**:用户将学习如何模拟协议交互,包括消息的加解密过程,以及如何...

    tamarin-prover:Tamarin证明程序的主要源代码存储库,用于安全协议验证-Verification code source code

    有关Tamarin证明器的安装和使用说明,请参见手册的第2章: : 发展与贡献 有关如何开发,测试和发布对Tamarin证明者源代码的更改的,请参阅。 版本编号政策 我们使用具有四个组成部分的版本号。 第一个组件是主要...

    PyPI 官网下载 | tamarin-utils-0.15.1.tar.gz

    在云原生环境中,可能还需要掌握Docker、Kubernetes等相关技术,以便将`tamarin-utils`整合到现有的云基础设施中。 总的来说,`tamarin-utils-0.15.1.tar.gz`是Python开发者在处理分布式系统和云原生环境时的一个...

    基于Tamarin的5G AKA协议形式化分析及其改进方法_.pdf

    基于 Tamarin 的 5G AKA 协议形式化分析及其改进方法 本文主要介绍了基于 Tamarin 的 5G AKA 协议形式化分析及其改进方法。在 5G 移动通信网络中,3GPP 组织标准化了 5G AKA 协议,用以身份认证和密钥协商。文章...

    redtamarin, 在 命令行/server 端,运行 AS3.zip

    redtamarin, 在 命令行/server 端,运行 AS3 redtamarin简而言之,redtamarin是基于 Tamarin项目( 例如。 Flash Player 虚拟机),并允许在命令行上运行AS3代码。因为Tamarin只支持,( 对象,array,等等 ),...

    PyPI 官网下载 | tamarin-utils-0.8.5.tar.gz

    `tamarin-utils`正是针对这样的需求而设计的,它提供了一系列与Zookeeper交互的Python接口,使得开发者可以更方便地在Python代码中使用Zookeeper的服务。这包括但不限于创建、删除、更新Zookeeper节点,以及监视节点...

    Python库 | tamarin-utils-0.15.4.tar.gz

    2. **数据处理**:包含了数据清洗、转换、分析的基础功能,适合于处理各种结构化和非结构化数据,帮助开发者快速预处理数据,为后续的数据分析和建模工作打下基础。 3. **网络通信**:提供了HTTP请求、WebSocket...

    tamarin:小而简单的 Ruby Web 服务器

    gem 'tamarin' 然后执行: $ bundle 或者自己安装: $ gem install tamarin 用法 运行服务器: bundle exec ruby lib / tamarin 然后,在其他终端运行: curl http : //localhost :3030 贡献 分叉它( )...

    EMVerify:Tamarin模型和EMV分析

    EM验证 这是EMV标准的模型,是我们IEEE S&P 2021论文EMV标准:Break,Fix,Verify的补充材料。 有关这项工作的详细信息,请访问 。... :GNU脚本,用于生成目标模型并对其进行Tamarin分析。 *.oracle

    EMVerify-PAN-routing:Tamarin模型和EMV非接触式分析

    是GNU脚本,用于生成目标模型并对其进行Tamarin分析。 *.oracle是证明支持的*.oracle 。 包含自动生成的目标模型( .spthy )及其证明( .proof )。 以HTML格式显示分析结果。 包含有用的脚本: 是一个Python...

    Action Script 虚拟机-AVM2 源码

    在压缩包文件`tamarin-central-fbecf6c8a86f`中,包含了AVM2的源代码,Tamarin是AVM2的一个实现,由Mozilla基金会开发。这个版本可能包含最新的改进和修复,是学习和研究AVM2的好起点。下载并分析这个源码,你将能...

    Tamarin HD Wallpapers Game Theme-crx插件

    包括Tamarin动作冒险视频游戏的高清图像 对于Banjo Kazooie Donkey Kong和Mario 64的粉丝! 包括动作冒险视频游戏Tamarin的高清图像。 对于Banjo Kazooie,Donkey Kong和Mario 64的粉丝! 我们始终会更新图像,因此...

    thane:用于 MSOY 的 Tamarin VM 的修改版本

    Thane 是 Tamarin ( ) 的一个轻微修改版本,具有部分 Flash Player 兼容层,主要用 ActionScript 编写,并带有一点原生胶水。 引擎本身被修改为在 x86_64 架构下的 Unix 平台上运行。 现有的 Windows/64 支持已扩展...

    安全协议形式化分析

    2. **SSL/TLS协议**:这是Internet上最常用的安全协议之一,用于保护Web通信的安全。SSL/TLS协议位于应用层和传输层之间,主要由两部分组成: - 上层协议:包括TLS握手协议、TLS密码变化协议和TLS警告协议。 - ...

    flash内部机制

    - **AVM2 (Tamarin)**:支持ActionScript 3版本的代码,并通过即时编译技术提高执行效率。 #### 四、SWF文件的发展历史 随着Flash技术的发展,SWF文件的用途也在不断扩展。最初,Flash主要用于制作动画,随着时间...

Global site tag (gtag.js) - Google Analytics