首页 > 其他分享 >Flash加密解密(三)——特殊混淆让asv2010解析代码失败

Flash加密解密(三)——特殊混淆让asv2010解析代码失败

时间:2023-04-07 10:01:26浏览次数:67  
标签:文件 混淆 代码 Flash 解密 swf asv2010 t1


1.Flash加密解密(一)——doswf混淆还原2.Flash加密解密(二)——Doswf生成代码分析

3.Flash加密解密(三)——特殊混淆让asv2010解析代码失败

从前面两节的分析可以看出,脆弱的swf文件极其容易被一些现成的工具反编译回可执行源代码。一旦可以进行动态调试,那 么这个文件将被他人掌控,即使你使用了最先进的加密算法来保护你的资源,但是你的解密操作总会暴露在你的代码中。所以必须重点保护好代码来确保核心算法以 及资源安全。

混淆的意思就是改变函数或变量名,让解密者难以很直观的看出其中的含义。对于编译好的swf文件来 说,它保存有全局变量以及函数名信息,但是在虚拟机运行的时候,这些变量名和函数名对于执行并没有影响,虚拟机只依靠他们id来区分他们。这种机制就给予 我们混淆带来了便利。我们可以对其中的变量名和函数名进行修改,让他们被反编译回去后,重新编译会发生错误,这样就增加了的复杂程度。

这次给大家介绍如何手动混淆一个swf文件,并提供一种方法,只需要改变swf中的一个字符,就可以使asv2010无法正常解析出代码。

现在开始我们的内容~

 

本帖隐藏的内容


首先我们先写一个测试文件,这个文件的作用是在舞台上显示一个“hello”的文本框,并设置其alpha值,代码如下:

1. package 
2. {

3.         import flash.display.MovieClip;
4.         import flash.text.TextField;
5.         import flash.text.TextFormat;
6. 
7.         public class Test extends MovieClip
8.         {

9.                 private var a1:int;
10.                 private var a2:Number;
11.                 private var a3:String;
12.                 private var t1:TextField;
13.                 public function Test()
14.                 {

15.                         a1 = 275;
16.                         a2 = 200;
17.                         a3 = "test2";
18.                         t1=new TextField();
19. 
20.                         fun1();
21.                         fun2();
22.                         fun3();
23. 
24.                 }
25.                 public function fun1()
26.                 {

27.                         t1.x = a1;
28.                         t1.y = a2;
29.                         t1.text = "hello";
30.                         addChild(t1);
31.                         trace(t1.text);
32.                         
33.                 }
34.                 public function fun2()
35.                 {

36.                         t1.alpha = 0.8;
37.                 }
38.                 public function fun3()
39.                 {

40.                         t1.rotation = t1.rotation * 0.8;
41.                 }
42.         }
43. }

复制代码



运行结果如下:

我们导出swf文件,然后用WinHex文件打开(如果swf文件被压缩,则先解压缩后在打开),我们可以看到swf文件中的内容:

 

 

具体文件各个地方表示的什么意思,可以参考官方文档。

 

我们往下面翻,可以看到:

 

 

我们刚才代码中定义的全局变量和函数的名字都在这里。

现在我们就可以对他们进行混淆了,你可以选择你喜欢的字符进行混淆。

 

我们对这些名字进行更改,将所有字符都改为数字:

 

 

保存后,发现swf可以正常运行,导入到asv中查看:

 

发现函数名和变量名都变成了数字,如果重新编译将无法通过。


如何让asv获取不到任何代码(仅针对asv2010及以前版本)?其实很简单,我们只需要打开编译好的swf文件,然后将任意变量名的第一个字符改为一个特殊字符,如下:

 

我们发现asv没有解析出任何代码:

 

标签:文件,混淆,代码,Flash,解密,swf,asv2010,t1
From: https://blog.51cto.com/u_4387387/6174609

相关文章

  • 基于AHB_BUS的eFlash控制器的微架构设计
    eFlash微架构设计1.回顾架构设计2.Flash时序仿真2.1ahb_flashc项目目录docsrtlsimtbmodel2.2docs架构设计文档微架构设计文档集成需求文档DataSheet2.3modelmodel文件夹下放的是一些仿真模型(Flash的rtl代码)和一些文档,这里存放的模型是不可综合的,只用于仿真......
  • silverlight/Flash 跨域访问给新手的一点经验
      尝试向URI“http://www.luozhuang.com/web1/WebService.asmx”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于SOAP服务。您可能需要与该服务的所有者联系,以发布跨域策略文件并确保该文件允许发送SOAP相关......
  • flask:cbv源码分析、模板语法、请求与响应、session及源码分析、闪现(flash)、请求扩展
    目录一、cbv源码分析1.1基于类的视图写法1.2源码分析1.3分析源码,查找不传别名的时候为什么函数名会变成别名1.4flask的路由注册使用装饰器,如果写了一个登录认证装饰器,那么应该放在路由装饰器上还是下?1.5dispatch_request讲解1.6知识点总结二、模板语法2.1py2.2html三、请......
  • 加密与解密之加壳程序
    描述自己实现一个简单的加壳程序,能够对选取程序的代码段进行加密,并添加外壳部分,在运行时还原本文分为三个部分:外壳程序,加壳程序,和用户交互程序外壳程序写到Stub.dll中,方便同加壳程序共享数据,获取原程序的PE文件信息将数据段合并到代码段,方便加壳程序读取并添加到原程序中......
  • 基于AHB_BUS的eFlash控制器的架构设计
    eFlash控制器的架构设计1.架构设计思路分析1.1含有的模块分析eFlash控制器是一个基于AHB的slave,所以需要一个AHB_slave_if处理AHB的信号。AHB_slave_if与AHB总线进行交互,对主设备的请求进行处理,还可以设置一些内部的寄存器,对AHB发送过来的信号进行解析。AHB_slave_if除了处......
  • 加密与解密之二次开发
    描述二次开发的含义:通过直接编辑二进制,来修改已编译好的程序,实现目标功能本文的原程序模拟一个windows是最常见的采用事件循环机制的窗口程序,通过二次开发,给这个程序上锁,加上一个验证身份框,只有输对用户名密码,才能正常使用程序功能原程序创建一个窗口,加入事件循环,响应窗口......
  • STM32 FSMC的 NOR FLASH B模式模拟LCD 8080时序
    STM32 FSMC:FSMC(FlexibleStaticMemoryController):翻译为:灵活的静态存储管理器。可管理的存储类型包括:NORFLASH 和 SRAMNANDFLASHPC Card(PC卡,不知道是什么东西)具体功能是将外部的存储设备映射为内部地址,可以用程序访问这些地址,间接地,由FSMC 自动产生相应时序,......
  • 【Flask】cbv源码分析 flask模板使用 flask请求与响应 session及源码分析 闪现flash
    目录上节回顾今日内容1cbv分析1.1源码分析2模板2.1app.py2.2index.html3请求与响应4session及源码分析4.1session的使用4.2源码分析4.3session执行原理5闪现6请求扩展练习上节回顾#1web框架 -django大而全-flask小而精-sanic-fastapi-同......
  • C# DES AES 加密解密
    ///<summary>///加密解密帮助类///</summary>publicstaticclassEncryptHelper{#regiondes实现///<summary>///Des默认密钥向量///</summary>publicstaticbyte[]DesIv={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF......
  • RSA加密与解密(jsencrypt.js)
    写在开头RSA加密不过多解释,直接描述使用时的流程和方法RSA加密一般是公钥加密私钥解密,多用于前台公钥加密传参给后台,后台私钥解密。本次我用到的场景是跨系统地址栏传参,参数需要加密处理。使用RSA加密时需要用到jsencrypt,使用方法会介绍怎么安装及使用jsencrypt介绍jsencrypt......