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

[tamarin系列之9] 在线的eval

阅读更多

我们先做一个实验:

 

1、构建一个测试类

publicclass TestA {
   
public function a() : String {
     
return"aaaa"   
}
}


2、把这段代码解析成已经包装了SWF头的ABC文件后为:

(请参考[tamarin系列之6] tamarin外篇---As3Eval
00000000  46 57 53 09 6c 01 00 00  78 00 03 e8 00 00 0b b8  |FWS.l...x.......|
00000010  00 00 0c 01 00 44 11 08  00 00 00 3f 12 49 01 00  |.....D.....?.I..|
00000020  00 10 00 2e 00 01 01 01  11 00 06 4f 62 6a 65 63  |...........Objec|
00000030  74 05 41 72 72 61 79 06  52 65 67 45 78 70 04 74  |t.Array.RegExp.t|
00000040  65 73 74 10 3c 23 69 6e  74 65 72 6e 61 6c 20 74  |est. <#internal t|
00000050  65 73 74 3e 08 69 6e 74  65 72 6e 61 6c 09 4e 61  |est>.internal.Na|
00000060  6d 65 73 70 61 63 65 06  70 75 62 6c 69 63 05 54  |mespace.public.T|
00000070  65 73 74 41 07 70 72 69  76 61 74 65 09 70 72 6f  |estA.private.pro|
00000080  74 65 63 74 65 64 01 61  04 61 61 61 61 0a 24 63  |tected.a.aaaa.$c|
00000090  6f 6e 73 74 72 75 63 74  06 24 63 69 6e 69 74 06  |onstruct.$cinit.|
000000a0  16 01 17 06 08 01 05 0a  18 0a 02 01 03 0c 07 01  |................|
000000b0  02 07 01 03 07 01 04 07  02 07 07 03 08 07 02 09  |................|
000000c0  07 03 0a 09 02 01 07 04  0b 07 04 0c 07 03 0d 04  |................|
000000d0  00 00 0d 00 00 00 0f 02  00 00 10 00 00 00 00 00  |................|
000000e0  00 01 07 08 09 05 00 01  01 0b 01 00 00 02 02 09  |................|
000000f0  06 00 05 04 08 0a 06 00  05 05 08 01 03 03 04 06  |................|
00000100  00 05 02 08 06 06 00 05  03 08 07 04 00 00 04 00  |................|
00000110  01 02 00 01 0c d0 30 f1  05 2c 0e d5 d1 08 01 48  |......0..,.....H|
00000120  47 00 00 01 05 02 00 02  15 f1 05 d0 2a 30 1d 57  |G...........*0.W|
00000130  2a d5 2a 1c d0 49 00 1d  d0 30 30 08 01 47 00 00  |*.*..I...00..G..|
00000140  02 01 01 00 01 03 d0 30  47 00 00 03 02 01 00 02  |.......0G.......|
00000150  17 d0 30 f1 05 5d 08 66  08 2a 30 58 00 1d 2a 30  |..0..].f.*0X..*0|
00000160  f1 05 1d 64 2b 68 07 47  00 00 40 00  |...d+h.G..@.|

把这个二进制文件另存为t.swf

3、新建一个FLEX工程test
然后让其加载t.swf并执行里面的a方法:

 
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"><mx:Script><![CDATA[ import mx.controls.Alert; import mx.events.ModuleEvent; private function init():void { var loader : Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event) : void { var wrapperClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition('TestA') as Class; var wrapper:Object = new wrapperClass(); trace(wrapper.a()); }); var request : URLRequest = new URLRequest("t.swf"); var context:LoaderContext = new LoaderContext(); context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); loader.load(request, context); } private function onComplete(e:Event) : void { var loader : Loader = (e.target as Loader); } ]]></mx:Script></mx:Application>



4、调试,输出结果为aaaa

=============================================

 

从1 -> 2 可以通过as3eval制作,它是不需要flex server的,也就是说不需要java等服务器支持

这完全是AS3在解析AS3的代码片段,然后生成ABC字节码

 

步骤2可以另存为文件,同时也可以参考[tamarin系列之6] tamarin外篇---As3Eval,不用持久化成文件或数据库内容,而直接读入内存,这些都是可以的

 

从上面的分析我们可以看出,步骤1可以放入数据库,需要时释放出来马上通过步骤3解析,也可以给用户一个文本框让用户及时输入,在线解析,而这一切是不通过服务器的

 

=============================================

 

利用在线解析,可以做到不用编译,直接序列化成swf文件,然后读取它就可以了,

也就是说,我们用AS3编译了AS3的代码片段

 

同时,用户可以直接输入内容,在本地进行内存编译解析,从而忽略服务器,也避免了压力

 

用户也可以通过输入定制的AS3 DSL,提交到数据库保存,使用时,提取这段DSL,进行解析就可以了,

不用再使用服务器端的JAVA编译,避免了安全问题。

 

使用AS3EVAL制作DSL会跟RUBY的DSL一样灵活,几乎可以定制任何规则,然后在本地进行解析

3
0
分享到:
评论

相关推荐

    tamarin-prover入门级介绍

    Tamarin Prover是一款强大的工具,专门用于形式化分析和验证安全协议的安全性。它由Simon Meier、Benedikt Schmidt、Cas Cremers和David Basin等专家开发,结合了瑞士ETH Zurich的信息安全研究所和西班牙IMDEA软件...

    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的用户手册

    9. **案例研究**:手册包含多个实际协议的案例研究,这些案例展示了如何使用Tamarin发现和修复已知的安全漏洞。 10. **相关工具链**:介绍与Tamarin配合使用的其他工具,以增强分析能力和提高效率。 通过学习...

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

    Tamarin证明者资料库 本自述文件描述了Tamarin证明者用于安全协议验证的存储库的组织。 它的目标受众是Tamarin证明者的感兴趣的用户和将来的开发人员。 有关Tamarin证明器的安装和使用说明,请参见手册的第2章: : ...

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

    它可能包含了一系列用于容器编排、微服务管理、服务发现等功能的工具,有助于开发者更好地适应和利用云环境。 Python库的结构通常是模块化的,`tamarin-utils-0.15.1`的压缩包内部可能包含以下组成部分: 1. **源...

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

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

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

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

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

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

    EMVerify:Tamarin模型和EMV分析

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

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

    《Python库tamarin-utils-0.15.4:实用工具集详解》 在Python的广阔天地里,各种库犹如繁星点缀,为开发者提供了强大的功能支持。其中,`tamarin-utils`是一个实用的工具集合,它在版本0.15.4中为我们带来了诸多...

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

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

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

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

    Tamarin HD Wallpapers Game Theme-crx插件

    包括Tamarin的HD图像动作冒险视频游戏。 对于Banjo Kazooie Donkey Kong和Mario 64的粉丝! 包括Tamarin的高清图像,动作冒险视频游戏。 对于Banjo Kazooie,Donkey Kong和Mario 64的粉丝! 我们总是更新图像,以便...

    安全协议形式化分析

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

    monkey数据集(monkey.org)

    "Monkey数据集"是由Monkey.org提供的一个广泛用于测试和研究目的的数据集合。这个数据集以其多样性和复杂性而闻名,通常被用在机器学习、人工智能、自然语言处理以及移动应用性能测试等领域。由于原始数据的混乱和无...

    现代汽车协议的安全分析与形式化验证工具的应用

    此外,详细分析了一些标准汽车协议(如SecOC)的安全性,展示了如何使用Tamarin工具进行形式化验证。 适合人群:信息安全研究人员、汽车工程技术人员以及对形式化验证感兴趣的开发人员。 使用场景及目标:①评估现有...

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

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

    Flash_ActionScript3殿堂之路.pdf

    - **Tamarin项目**:源码捐赠给Mozilla的Tamarin项目,这表明AS3正积极拥抱开源社区。 #### 4. Adobe AIR的意义 - **跨系统运行时**:2007年推出的Adobe AIR Beta版本,实现了RIA程序可以在多个操作系统上运行的...

    ActionScrip殿堂之路TXT版

    2. **系统资源管理**:除了异常处理之外,AS3.0还提供了一系列工具和API帮助开发者更好地管理系统的资源,比如内存和CPU使用情况。 - **Adobe Integrated Runtime (AIR)**:2007年发布的Adobe AIR Beta版本,为...

Global site tag (gtag.js) - Google Analytics