zoukankan      html  css  js  c++  java
  • Flash Player安全高级攻略

    转自:http://flash.9ria.com/thread-41568-1-1.html

    说一些显而易见的:

    • SWF很容易被反编译得到ActionScript代码。
              像"Sothink SWF decompiler"这样的应用在任何时间都可以做到。下一步...
    • 浏览器会缓存已经下载的SWF以便在将来更快的访问。
              IE缓存文件夹在“C:\Documents and Settings\USER\Local Settings\Temporary Internet Files\Content.IE5”(Window通常都隐藏这个文件夹,即使你把很多东西设置为可见,在地址栏中输入路径)。下一步...
    • 没有任何方法知道swf是否已经被篡改。
              没有签名...没有检查。下一步!
    • 客户端程序永远不能信任
              这是个事实。下一步?
    • 文件不能被加密(基本上大部分)
              Flash Player必须能够读取你的文件,因为它不知道你用什么加密,你必须"载入"一个加密的文件,加密文件的算法加载器中。但是你如何处理加载器呢?

    你必须关心的一些事情:

    • 在flash调用"ApplicationDomain"时的特征。
              ApplicationDomain类是一个分离类定义的组的容器。Application domains通常用于区分在相同安全域的类。它与徐同一类存在多个定义,也允许子类重复使用父类的定义。
    • 通常,触发从浏览器缓存中重新加载SWF的唯一一件事情是它的文件大小。(如果文件大小不是完全相同,则重新下载)。
    • Flash Player没有办法知道一个SWF是否被授权。
    • 浏览器没有办法知道一个SWF是否被授权。
    • Flash Player不关心SWF是否在文件的结尾填充了null字符。
              SWF包含它的大小,将被装入相应的大小,但是后面跟的是什么并不关心。


    案例1

    难点:我们必须这样做?

    让我们找一些想CheatEngine一样的软件,找到一些你想改变的有趣的数字(查看你的分数?),查找你的数字并改变它。做的好,朋友!

    应用程序被入侵,但是它不会再发生了!
    我添加了一些加密算法(AES/XOR)在内存值中

    案例2

    难点:开发人员知道内存欺骗的基本知识

    因此,它不工作...(你找不到任何感兴趣的东西)

    下载包注入软件(例如:Packet Porge或者额任何其他)。一些数据伪装包你想改变...改变它...然后将它发送到服务器。或者不改变它,发送几次相同的内容以添加交互频率。

    应用程序被入侵,但是它不会再发生了!
    我添加了一些加密(AES/XOR)包以增加包的数量递增ID以检测注入。

    案例3

    难点:开发人员知道关于网络包注入的基本知识

    因此,它不工作...(你不知道在这些包装中都传输了些什么,复制他们好像没有任何效果)

    描述:应用程序是由2个SWF文件组成(一个preloader和主程序)

    打开你的浏览器缓存,找到"Main.swf",把它拷贝到其他地方。

    在Sothink中运行它...反编译...重新编译FLA文件,修改你想要改变的地方(修改分数乘以10或者完全删除案例1和2中的保护措施),确保文件的大小与原来的大小完全一致(可以在文件的结尾添加NUL间隔,或者如果有需要的话删除一些素材确保它变小),然后将文件放回缓存中,重新载入文件。

    你做到了!

    应用程序被入侵,但是它不会再发生了!
    我通过某些东西加密了Main主文件,所以它不会被反编译。

    案例4

    难点:所以开发人员也知道反编译器?

    因此,它不工作了...(Main主文件不是一个SWF,且不能被反编译。)

    但是Flash Player可以运行这个应用... 当然可以了!加载器下载了主文件,加密文件,任何使用"Loader.loadBytes()"从内存中载入它。因为在loader中含有算法?是的!反编译...改变代码以ByteArray形式输出"加密文件"到一个文件中,通过"flash.net.FileReference"代码保持到你桌面。

    你现在已经有用Sothink反编译好的Main.swf了.(看案例2)

    你做到了!

    应用程序被入侵,但是它不会再发生了!
    我在整个工程中使用了代码混淆。他们不理解做了什么处理!
  • 相关阅读:
    了解一些分词工具
    Maven 依赖的作用域
    aop 的一些表达式
    Mybatis 高级查询的小整理
    namespace" 或The content of element type "mapper" must match "EMPTY"
    Spring事务管理
    Java异常详解
    初识事务
    数据库共享锁与排它锁
    StringUtils.isEmpty和StringUtils.isBlank的区别
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1627349.html
Copyright © 2011-2022 走看看