也谈用可执行文件方式加密FLASH文件的解密方法

工具:OD  Lordpe 16进制编辑器
程序:多彩的夏天.exe
目的:从EXE文件中导出SWF,之后可以进行反编及修改操作
说明:为了研究需要而处理的。不敬之处请您谅解。

1、OD导入程序。
  停在这里
004B556B > $ 6A 60           PUSH 60
004B556D   . 68 30805300     PUSH 多彩夏天.00538030
004B5572   . E8 E9EBFFFF     CALL 多彩夏天.004B4160
004B5577   . BF 94000000     MOV EDI,94
004B557C   . 8BC7            MOV EAX,EDI
004B557E   . E8 CD95FFFF     CALL 多彩夏天.004AEB50

2、执行程序,之后可以看到程序运行的界面。以及播放的FLASH动画。
注意:此程序不是用Flash播放器生成的EXE文件,所以不能用网上的一些去头的方法进行处理。
到OD中。

ALT+M显示内存列表。

选一些比较大的内存块,鼠标右键,在CPU中进行转存,这样在数据区时可以看到内存块的内容了,
进行 二进制的搜索Flash文件的头 FWS 字符,如果你找到了,可以看一下,这一块内容离块的头并不远,
实际上不用找也能看到的。

01DF0000  50 00 5F 01 50 00 5F 01 00 00 00 00 00 00 00 00  P._ P._ ........
01DF0010  00 60 27 00 00 60 27 00 11 08 00 00 00 0B 00 00  .`'..`'.  .....
01DF0020  46 57 53 06 EE 57 27 00 78 00 07 D0 00 00 17 70  FWS 頦'.x.?. p
01DF0030  00 00 0C 17 00 43 02 FF FF FF 44 0B 06 00 00 00  ... .C D ...
01DF0040  3F 03 02 00 00 00 07 00 BF 05 76 2D 00 00 01 00  ?  ....?v-.. .

大约在块头的20H开始,简单说一下Flash头的格式:
01DF0020  46 57 53 06 EE 57 27 00 78 00 07 D0 00 00 17 70  FWS 頦'.x.?. p
           ====== -- =========
           标示   版本  长度
长度内容一会要用的。当前文件的长度是2757EEH字节长,1DF0020+2757EE=1E6580E 说明我们的Flash到此位置

3、上lordpe,在path中选中程序的名称列表。
  鼠标右键  dump region  汉语是  脱壳部分区域。
在列表中选中我们刚才的内存块了。
 右键 dump,保存文件AA.SWF。
4、用16进制编辑器打开生成的文件AA.SWF,去掉头20H字节, 之后到2257EEH处,删除后面的字节。
之后SWF文件就可以看到了,用播放器可以看。用AVS可以反编。

5、总结
现在网上的Flash的文件加密方法很多,但常是能被反编译,之后改文件,改底稿,改图片,为了保护作者的权力,可谓保护起来不遗余力了。
这种保护方法是用VC编程,之后在程序中调用播放Flash的控件,再调用Flash文件进行播放。因为数据是被压缩的,不能直接dump出来的。

多年不写东西,都快不会打字了。
    Nig  2005.06.13