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编译优化。
相关推荐
资源来自pypi官网。 资源全名:tamarin-utils-0.14.5.tar.gz
有关Tamarin证明器的安装和使用说明,请参见手册的第2章: : 发展与贡献 有关如何开发,测试和发布对Tamarin证明者源代码的更改的,请参阅。 版本编号政策 我们使用具有四个组成部分的版本号。 第一个组件是主要...
学习tamarin的必读文档之一,建议在阅读tamarin用户手册之前先阅读该文档。该文档为tamarin-prover的入门级介绍文档,可以快速了解tamarin的用途、使用方式与效果。
redtamarin, 在 命令行/server 端,运行 AS3 redtamarin简而言之,redtamarin是基于 Tamarin项目( 例如。 Flash Player 虚拟机),并允许在命令行上运行AS3代码。因为Tamarin只支持,( 对象,array,等等 ),...
gem 'tamarin' 然后执行: $ bundle 或者自己安装: $ gem install tamarin 用法 运行服务器: bundle exec ruby lib / tamarin 然后,在其他终端运行: curl http : //localhost :3030 贡献 分叉它( )...
近期国内外很多安全研究人员使用Tamarin对一些经典安全协议进行分析,并发现了经典协议的漏洞,其中包括TLS核5G通信协议,以及最近火爆流行的ECU安全通信协议SecOC。 本文档为Tamarin用户手册,是学习Tamarin的最佳...
EM验证 这是EMV标准的模型,是我们IEEE S&P 2021论文EMV标准:Break,Fix,Verify的补充材料。 有关这项工作的详细信息,请访问 。... :GNU脚本,用于生成目标模型并对其进行Tamarin分析。 *.oracle
资源来自pypi官网。 资源全名:tamarin-utils-0.15.1.tar.gz
资源来自pypi官网。 资源全名:tamarin-utils-0.8.5.tar.gz
基于Tamarin的5G AKA协议形式化分析及其改进方法_.pdf
python库。 资源全名:tamarin-utils-0.15.4.tar.gz
是GNU脚本,用于生成目标模型并对其进行Tamarin分析。 *.oracle是证明支持的*.oracle 。 包含自动生成的目标模型( .spthy )及其证明( .proof )。 以HTML格式显示分析结果。 包含有用的脚本: 是一个Python...
包括Tamarin动作冒险视频游戏的高清图像 对于Banjo Kazooie Donkey Kong和Mario 64的粉丝! 包括动作冒险视频游戏Tamarin的高清图像。 对于Banjo Kazooie,Donkey Kong和Mario 64的粉丝! 我们始终会更新图像,因此...
Thane 是 Tamarin ( ) 的一个轻微修改版本,具有部分 Flash Player 兼容层,主要用 ActionScript 编写,并带有一点原生胶水。 引擎本身被修改为在 x86_64 架构下的 Unix 平台上运行。 现有的 Windows/64 支持已扩展...
形式化分析、安全协议分析
monkey.org的数据过于杂乱,将其分开并分类处理
包含10个不同种类的猴子图像数据集,(1.Bald Uakari Emperor Tamarin Golden Monkey Gray Langur Hamadryas Baboon Mandril Proboscis Monkey Red Howler Vervet Monkey White Faced Saki)每类猴子1000张图片左右
文章中所做的测试所需要的东西,包括Tamarin、asc.jar、builtin.abc、toplevel.abc等 博文链接:https://rednaxelafx.iteye.com/blog/196278