加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将exe文件剥离出swf文件

发布时间:2020-12-15 18:13:13 所属栏目:百科 来源:网络整理
导读:说明:该程序是将用Flash编写的,并被发布成exe文件的小游戏(如早先的著名游戏《机械迷城》)剥离成SWF文件,纯属娱乐小游戏,写着玩的,算法就不讲了,看看代码就明白了。运行环境Visual Studio C++ 2005;直接上代码 #include "stdafx.h" #include window

说明:该程序是将用Flash编写的,并被发布成exe文件的小游戏(如早先的著名游戏《机械迷城》)剥离成SWF文件,纯属娱乐小游戏,写着玩的,算法就不讲了,看看代码就明白了。运行环境Visual Studio C++ 2005;直接上代码

#include "stdafx.h"
#include <windows.h>

// swf文件玩具
typedef struct tagswfID {
??? unsigned long int?? id;
??? unsigned long int?? swfFileSize;
} SWFID;

int _tmain(int argc,_TCHAR* argv[])
{
??? // 玩具程序2----将一个可执行档的exe转成swf文件;针对某些用Flash编写的游戏并被最终发布为exe文件,该程序可以自动剥离出swf文件
??? // 玩笑程序,愚人节礼物,但绝对可用
??? // 要转换的可执行swf文件(后缀名.exe)
??? const char iswfFileName[] = "Samorost2.exe"; //原始SWF文件
??? HANDLE hFile = CreateFile(iswfFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,
??????? FILE_ATTRIBUTE_NORMAL,NULL);
??? if(hFile != INVALID_HANDLE_VALUE)
??????? {
??????? int nFileSize = GetFileSize(hFile,NULL);
??????? SetFilePointer(hFile,nFileSize - 8,FILE_BEGIN);
???????
??????? SWFID swfid;
??????? DWORD NumberOfBytesRead;
??????? if( ReadFile(hFile,&swfid,8,&NumberOfBytesRead,NULL) )
??????????? {
??????????? if(NumberOfBytesRead == 8 && swfid.id == 0xFA123456 )
??????????????? {
??????????????? // 移动到该swf文件头,并生成新的swf文件
??????????????? SetFilePointer(hFile,nFileSize - swfid.swfFileSize - 8,FILE_BEGIN);
??????????????? unsigned char *buffer = NULL;
??????????????? buffer = (unsigned char *)malloc(swfid.swfFileSize + 16);
??????????????? ReadFile(hFile,buffer,swfid.swfFileSize,NULL);

??????????????? const char outputFile[] = "outswffile.swf"; // 输出的SWF文件
??????????????? HANDLE hswfFile = CreateFile(outputFile,GENERIC_WRITE,CREATE_ALWAYS,FILE_FLAG_WRITE_THROUGH,NULL);
??????????????? if(hswfFile != INVALID_HANDLE_VALUE)
??????????????????? {
??????????????????? DWORD nWriteBytes;
??????????????????? WriteFile(hswfFile,&nWriteBytes,NULL);
??????????????????? CloseHandle(hswfFile);
??????????????????? }
??????????????? free(buffer);
??????????????? }
??????????? }

??????? CloseHandle(hFile);
??????? }

???? return 1; } 程序比较小白,纯属娱乐

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读