LINUX.ORG.RU

exe2swf


0

0

как можно конвертить скомпиленные в *.exe флешки обратно в *.swf

anonymous

Откусить заголовок ... держи исходник писанный на коленке
-----------------------
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>


int main(int argc, char* argv[])
{
    static char   FileNameEXE[255];
    static char   FileNameSWF[255];
    static char   FileName[255];
    static char   Pattern[]={'F','W','S','\5'};
           char*  noExtName;
           struct stat  FileStat;
           int    fd_exe,fd_swf,res,j,sf;
           char*  FlashEXE;
           char*  FlashSWF;
           long   i;
           long   SWF_size;

        if (argc < 2) {
            printf("Usage: %s [EXE flash]\n", argv[0]);
            exit(0);
        }
        j = 1;

        do {

            sprintf(FileNameEXE,"%s",argv[j]);
            sprintf(FileName,"%s",FileNameEXE);

            noExtName=strstr(FileName,".exe");
            if (noExtName) {
                noExtName[0]='\0';
            } else {		
                printf("File %s not FlashEXE ?\n",FileNameEXE);
            }

            sprintf(FileNameSWF,"%s.swf",FileName);

            if (stat(FileNameEXE,&FileStat)==0) {
                fd_exe = open(FileNameEXE,O_RDWR|O_SYNC,S_IRUSR|S_IWUSR);
                if (fd_exe == -1) {
                    printf("Error open file %s \n",FileNameEXE);
		} else {
		 FlashEXE = (char*)mmap(0,FileStat.st_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd_exe,0);
                 if (FlashEXE) {
                    printf("File %s: Seek SWF signature...",FileNameEXE);
                    sf=0;
                    for (i=0;i<(FileStat.st_size-4);i++) {
                        FlashSWF =(char*)((long)FlashEXE+i);
                        res = memcmp(Pattern,FlashSWF,4);
                        if (res!=1 && res!=-1) {
                            printf("OK!\nOffset %x. ",i);
                            fd_swf = open(FileNameSWF,O_CREAT | O_RDWR, S_IRUSR|S_IWUSR);
                            write(fd_swf,FlashSWF,FileStat.st_size-i);
                            printf("Save Flash in file %s.\n",FileNameSWF);
                            close(fd_swf);
                            sf=1;
                            break; 
                        }
                    }
                    munmap(FlashEXE,FileStat.st_size);
                    close(fd_exe);
                    if (!sf)
                        printf("not found.\n");
                } else {
                    printf("Error mapping file %s \n",FileNameEXE);
                }
                if (fd_exe != -1 && fd_exe)
                    close(fd_exe);
             }
	    } else {
                printf("File %s not found.\n",FileNameEXE);
            }
            j++;
        }while (j<argc);
        return 0;
    }

sS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.