谈谈加密和混淆吧[转]

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

还是谈谈自己一直在做的一个应用:flash加密及混淆。从去年8,9月份开始研究。先是研究swf的文件结构,然后是abc的结构。慢慢也明了swf运 行的原理。特别是研究abc结构后,收获很多。然后在写as代码的时候会联想到这些会编译后对应的指令。比如 var a:Number = 3。对应指令就先在local数据中设置一个空间:null,接着一个指令将该空间转换为Number类型,然后添加一个byte数据3到scope,最 后才是指令将3复制到给先前的空间。a字段是不会被编译进去的,这就是为什么用编译软件看到的临时变量都不是原先的名称;再引申下,你可以尽量明了的命名 临时变量,比如:var theFirstValue:Number = 0, 而不用var b:Number = 0。很明显theFirstValue很适合阅读,而且反正也不会编译到swf中去,不用担心太长而增加swf体积。

接下来自己便开始做 加密。先想到的是加壳的方法。后来和别人一交流,才发现,这种方法其实已经早已不是什么新想法了。只要你研究写swf的文件结构,就很容易想到这个方法。 虽然后来想久,尝试很久,还是没有更好的加密方法。其实对于swf而言,已没有加密可言。除非借助与第三方交互。或者adobe自己的人去加密——毕竟 swf文件结构白皮书公布的信息只是一部分而已。所以,最好还是混淆。

加密完成之后,我就开始研究混淆。研究过abc结构的人,应该都很 清楚:要混淆一个方法、一个类名其实很容易。比如你有一个类ABCD,这时候你只要在abc数据中找到这个ABCD,替换为你想混淆成的样子,比如 aaa1。重新组装abc,就完成了混淆。但是如果你有一个类alpha呢?你将alpha混淆成aaa1了。然后你会发现你的代码:(new MovieClip).alpha = 0.3;变成了(new MovieClip).aaa1= 0.3;——swf是一个高压缩的文件格式,abc也是如此。它不可能为同一个字段保存两字。也就是说你的类名alpha和属性alpha引用的是同一数 据,当这个数据被改变是,一切引用该数据的地方都改变了。于是,你需要一个操作:将不混淆字段复制。就上面这个例子:将alpha数据复制一份给“new MovieClip”使用,而类alpha使用的一份进行混淆。
好,这样完成了一小部分。但是还会有问题。比如你从服务器接受了一个xml数据:

best wish to demi

然 后你会通过xml.title来得到这个数据。但是你恰恰这个时候有类方法:public function get title():String。然后你混淆了title为aaa1,然后xml.titlt变为xml.aaa1了,就获取不到数据了。于是又涉及到一个 问题了:特殊字段。还比如:
getDefinitionByName(”MainAPP”); MainAPP是特殊字
ExternalInterface.call(”eval”, “alert(’asdf’);”); eval是关键字
等等。有了这些特殊字和copy字段后,就可以进行大力混淆了。当然本人研究也是有限,很多情况没有遇到过,所以肯定会漏掉一些情况。

以上只是自己的对加密和混淆的一些心得。有不对的地方,敬请指正。
另外就是可以下载DoSWF,里面有上面谈到的加密和混淆功能。
本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/archive/2009/10/27/1590611.html

jiahuafu

相关文章
|
6月前
|
前端开发 JavaScript 安全
顶级加密混淆混淆工具测评:ipagurd
顶级加密混淆混淆工具测评:ipagurd
95 0
|
6月前
|
Java 开发工具 数据安全/隐私保护
技术博客:市面上加密混淆软件的比较和推荐
技术博客:市面上加密混淆软件的比较和推荐
119 0
|
2月前
|
安全 Java 数据安全/隐私保护
- 代码加密混淆工具-Java 编程安全性
在Java编程领域,保护代码安全与知识产权至关重要。本文探讨了代码加密混淆工具的重要性,并介绍了五款流行工具:ProGuard、DexGuard、Jscrambler、DashO 和 Ipa Guard。这些工具通过压缩、优化、混淆和加密等手段,提升代码安全性,保护知识产权。ProGuard 是开源工具,用于压缩和混淆Java代码;DexGuard 专为Android应用程序设计,提供强大加密功能;Jscrambler 基于云,保护Web和移动应用的JavaScript及HTML5代码;DashO 支持多种Java平台和
183 1
|
5月前
|
开发框架 Java .NET
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
|
6月前
|
安全 Java 数据安全/隐私保护
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
|
6月前
|
移动开发 安全 Java
代码混淆的原理是什么?常见代码混淆方法介绍
代码混淆的原理是什么?常见代码混淆方法介绍
63 3
|
6月前
|
JavaScript 安全 数据安全/隐私保护
代码混淆的原理和方法详解
代码混淆的原理和方法详解
387 0
|
6月前
|
安全 算法 数据安全/隐私保护
现代密码学 补充1:两种窃听不可区分实验的区别
现代密码学 补充1:两种窃听不可区分实验的区别
56 0
|
6月前
|
算法 安全 网络安全
一文搞懂常见的加密算法
一文搞懂常见的加密算法
791 0
|
12月前
|
Java Unix Windows
JspServlet混淆与绕过处理
JspServlet混淆与绕过处理
116 0