选择显示字体大小

从问题到结果 ――exe2swf的开发手记

从问题到结果 ——exe2swf的开发手记

  随着macromedia flash 5的闪亮推出,flash在网络多媒体应用方面已经占据了不可动摇的地位,再加上中国闪客们的无私劳动,许多经典歌曲,比如“东北人”、“第一次” 等等都有了flash版本的mtv,真是别有一番情趣。然而,网络上许多flash作品都是exe形式的,虽然方便了没有安装flash插件的朋友,但是exe形式的flash不能用于网页制作,更不用说分析action什么的了。由于手边没有免费的exe2swf工具,于是决定自己diy一个,一显programmer本色!

一、开发工具

  我用到的开发工具有delphi6,最好用的rad工具; ultraedit,强大的16进制编辑工具;showgood三国系列中的财神到.swf、桃源结义.swf、神啊救救我吧.exe、割须弃袍.exe;最后就是思考,最有力也是最根本的工具。^_^

二、基本思路

  首先我设想了一个基本思路:exe形式的flash包含两部分,flash播放器和跟在播放器后面的swf文件,因为bmp2exe、mp32exe等软件都是这么做的。是不是这样呢?我们动手看一看吧!

  用ultraedit打开“财神到.swf”和“桃源结义.swf”分析文件头,非常明显,文件头都包括相同的ascii码“fws”,估计这是flash文件的标识符。用ultraedit打开“神啊救救我吧.exe”,文件全长1183046字节。按下ctrl+f调出搜索对话框,在find what后填入“fws”并且勾上“find ascii”,搜索。果不其然,在5c000处找到了“fws”,接着的部分也和“财神到.swf”中的非常相似,可见假设很有可能是正确的。顺藤摸瓜,查看两个.swf文件的文件尾,都是若干个00加上40 00 00 00的形式,然而“神啊救救我吧.exe”的文件尾却是若干个00加上40 00 00 00再加上120d3e处的56 34 12 fa 3e 4d 0c 00。最后这八个字节会是什么呢?再打开“割须弃袍.exe”,发觉它的最后八个字节是56 34 12 fa 82 f5 12 00。聪明的你一定猜到56 34 12 fa是exe形式flash文件的标识符了吧?经过检查其他exe形式的flash,事实证明了这个猜测是正确的。至于3e 4d 0c 00是什么呢?不妨把它当作一个32位整数,注意到低字节和高字节的逆序,3e 4d 0c 00就应该等于00 0c 4d 3e,也就是十进制的806206。ok!至此我们已经获取了足够多的信息,接着就看看有什么巧合吧!颠来倒去,不难发现,把“神啊救救我吧.exe”中swf部分的结束地址120d3e减去起始地址5c000,不就正好得到806206?
接下来要办的事情就简单了,我们动手证实一下。还是利用ultraedit,把5c000至120d3e之间的数据粘贴出来,保存为一个.swf文件,用ie打开一看,这不就是久违了的陈小春的歌吗?呵呵,大功告成!

  顺便说一句,如果好奇的话,你还可以把0至5c000的数据直接保存成.exe文件看看,呵呵,惊奇吧,就是flash 5中的standalone player!

三、编写程序

  在正式编写程序之前,我想先花一些时间介绍delphi 中的文件流操作。如果你已经对这个非常熟悉了,可以跳过去,直接阅读后文的代码。否则,请花一点时间看一看,这对于你阅读下面的代码非常有帮助。

  在delphi中,所有流对象的基类为tstream类,其中定义了所有流的共同属性和方法。那什么是流呢?简单来说,流就是建立在面向对象基础上的一种抽象的处理数据的工具。流中定义了一些处理数据的基本操作,如读取数据、写入数据等,程序员只是面对流进行所有操作的,不用关心流的另一头数据的真正流向。我们程序中将要使用tfilestream,它是tstream最常用的派生类。使用 tfilestream操作文件要比object pascal基本文件操作方便得多。tfilestream的基本操作是这样的:首先create一个实例,然后用try...finally tfilestream.free的格式操作,“...”部分可以用tfilestream的readbuffer、 seek、

  writebuffer、copyfrom方法来操作文件流。此外,流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。编写程序时善加利用流,将会大大提高编程的效率。

  好了,现在让我们正式开工。首先我们先设计窗体。打开delphi,首先在窗体上添加两个button、两个edit、一个opendialog以及若干个label工具,界面设计以及控件 name属性,其他的采用默认值。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons