最近做as3 开发,难免要学习一下别人的代码(当然我自己的代码是不做处理的,因为处理也没用),但是有些感觉不错的应用的主程序或者素材都是二进制处理过的,拿来直接反编译看不出
来都用了什么功能,但是发现既然是二进制的要让flash客户端来用,必然要自己解压。这样解压算法必然能在flash中看到,所以这些所谓的二进制是显然的不堪一击。
百度空间应用 【幸福厨房】感觉做的不错,有值得学习的地方,但是分析发现,主程序和代码
都是二进制压缩处理过的,从loading flash 中发现
了解压算法
private function encryptLoaded(event:Event) : void
{
var _loc_2:ByteArray = null;
var _loc_3:ByteArray = null;
var _loc_4:int = 0;
_loc_2 = event.target.data;
_loc_2.uncompress();
_loc_3 = new ByteArray();
_loc_4 = 0;
trace(_loc_2.length);
while (_loc_4 < (_loc_2.length - 1))
{
_loc_3.writeByte(_loc_2[_loc_4] - _loc_2[(_loc_2.length - 1)]);
_loc_4++;
}
var _lc:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
var _loc:Loader = new Loader();
_loc.loadBytes(_loc_3, _lc);
_loc.contentLoaderInfo.addEventListener(Event.COMPLETE, assetLoaded);
}
然后仿照这个解压算法 用脚本处理一下就ok了。
下面是python 解压 kitchen.data 的例子:
#!/usr/bin/env python
#coding:utf-8
# Author: adan --<>
# Purpose:
# Created: 2009-10-28
import sys
import zlib
import struct
import cStringIO
datafile = 'kitchen.data'
swffile = 'kitchen.swf'
fh = file(datafile,'rb')
fh1 = file(swffile,'wb')
b = fh.read()
bz = zlib.decompress(b)
length = len(bz)
print length
last = bz[length - 1].encode('hex')
lastInt = int(last,16)
outstr = cStringIO.StringIO()
for num in range(0,length):
x = bz[num].encode('hex')
i = int(x,16)
d = i - lastInt
e = struct.pack('i',d)
outstr.write(e[0])
fh1.write(outstr.getvalue())
fh1.close()
解压出来 kitchen.swf 再反编译发现一切都是赤裸裸的。
大家不要鄙视我看别人的代码,我只是说这种方法根本行不通。
分享到:
相关推荐
在计算机内部,所有的数据都是以二进制形式存储和处理的。因此,了解如何在两者之间转换对于理解和编写C#代码至关重要。 ### 1. 二进制转十进制 在C#中,可以使用`Convert.ToInt32()`函数将二进制字符串转换为十...
在数字系统中,二进制和十进制之间的转换是基本操作。...它利用逐位检查和位移操作,对输入的二进制数进行处理,最终得到一个32位的十进制表示。在实际应用中,可能会根据具体需求选择更通用或优化的转换策略。
JAX-WS提供了对MTOM的支持,使得开发人员能够方便地处理二进制数据的上传和下载。 在"JAX-WS_Upload_Client"文件中,我们可以看到一个示例客户端代码,它展示了如何使用JAX-WS调用支持MTOM的Web服务来上传二进制...
通过分析和理解这段代码,我们可以更好地掌握浮点数和二进制之间的转换方法。学习这部分内容不仅有助于理解底层计算原理,还有助于在编程时更有效地处理浮点数,例如在进行高精度计算、浮点数比较或优化性能时。 总...
总结,C#处理二进制数据涉及到二进制流、序列化与反序列化、数值类型的二进制表示、以及网络和文件操作等多个方面。理解并掌握这些概念,能够让你更有效地处理各种复杂的二进制数据任务。在实际项目中,根据需求选择...
delphi与flash(swf)二进制数据交换。delphi传递swf文件给flash控件,并显示出来,delphi2007版本,flash5.5版本,适合数据安全传输,稍加改动可以做flash网游服务器端(需要开放843端口,传递策略文件)。
二进制数据通常指的是以0和1形式表示的信息,是计算机理解和处理的基础。这种工具对于程序员、逆向工程师和系统管理员等IT专业人员来说非常有用,因为它们可以深入到程序或文件的底层结构中去查看和修改数据。 二...
本文将深入探讨处理二进制文件的原理和方法,并提供一个源代码示例。 一、二进制文件的结构 二进制文件通常由特定格式定义,这种格式决定了数据如何被组织和解析。例如,图片文件(如JPEG或PNG)包含图像像素数据...
在Java编程语言中,二进制运算是一种基础且重要的概念,尤其对于计算机科学的理解和算法设计至关重要。...通过阅读和理解这些代码,你可以深入了解如何在Java中进行二进制运算,并锻炼自己的编程能力。
这种工具对于程序员、数据分析师或者安全研究人员来说非常有用,因为二进制码是计算机存储和处理数据的基本形式。下面我们将深入探讨与二进制码相关的一些关键知识点。 首先,我们要理解什么是二进制码。二进制码是...
6. **代码高亮和自动完成**:虽然这主要是针对源代码文件的功能,但EditPlus也支持对二进制文件中的特定结构进行颜色区分,帮助用户更好地理解和解析数据。 7. **宏录制和播放**:EditPlus的宏功能允许用户录制一...
在实际使用过程中,用户可能需要了解如何通过命令行或者图形界面操作这个工具,如何读取二进制数据并将其嵌入HTML代码,以及如何确保浏览器能够正确解析和显示这些二进制图片。对于开发者来说,理解图片数据的二进制...
总之,BES二进制文件编辑器是一款强大的工具,它将二进制文件的编辑和查看过程变得简单易行,无论是在开发、维护还是研究工作中,都是不可或缺的助手。通过熟练掌握其各项功能,用户可以在处理二进制文件时更加...
在C++编程中,将文件转换为二进制和从二进制还原文件是一项常见的任务,特别是在处理图像、音频、视频和其他数据时。这个过程涉及到读取文件内容并将其存储为二进制数据,以及从二进制数据中恢复原始文件。在VS2010...
所有计算机存储和处理的数据,无论其表现形式如何(如文本、图像或音频),最终都会被转化为二进制形式,即由0和1组成的数字序列。二进制代码阅读器的作用就是揭示这些隐藏在文件背后的原始数据。 "VC 文件二进制...
在IT领域,理解和处理二进制数据是至关重要的,因为计算机底层的数据存储和传输都是以二进制形式进行的。这款工具不仅支持二进制格式,还提供了对十六进制和八进制数据的支持,这使得它在处理各种类型的数据时具有更...
如果我们⽤⼗进制去表⽰种群中的个体,并且如果设定种群规模为10个个体,那么很简单,只要在-3.0到12.1这个区间随机选择10个⾮重复的...遗传算法十进制转为二进制matlab代码,该段代码适合初学遗传算法的小白进行学习
了解这两种进制之间的转换对于理解计算机内部的工作原理至关重要,因为计算机底层数据存储和处理通常都是以二进制形式进行的。 16进制转换成二进制的过程可以通过以下几个步骤完成: 1. **单个十六进制数字转换**...
汇编指令与二进制代码对照表汇编指令与二进制代码对照表
这种格式非常适合单片机,因为它们通常只能理解和处理二进制数据。 描述中提到的“在一些单片机显示的编程上可能能够方便地取得图片的二进制模型”,意味着转换后的二进制数据可以直接加载到单片机的内存中,通过...