SWF 2 EXE (Теория)
$$$
До Н.Г.
ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ

SWF 2 EXE (Теория)

Опубликовано: 08-08-2014 23:32 Автор: MBTY Теги: Разное
Раньше (где-то 7-10 лет назад) Flash контент был очень популярен. На нём писали почти всё: Сайты, приложения, игры, учебные материалы, мультики и прочие скримеры.
У всего перечисленного (кроме сайтов) контента было расширение *.SWF. На компьютере же должен был иметься Flash Player, который это дело и запускал. Мало того: Flash Player версии тех времен имел крутую функцию "искаропки" - конвертирование любого SWF файла в автономное EXE приложение (Файл>>Создать проектор). И никто этому тогда особо не удивлялся и не задумывался, что может быть как то иначе.
Шли годы, среду разработки Flash перекупали разные правообладатели, допиливали, дополняли, РАСШИРЯЛИ и за эти 7-10 лет с случилось в мире Flash случилось много всякого нехорошего, но 1 факт почувствовали многие нынешние фанаты Flash контента - функция конвертирования SWF>>EXE была выпилена напрочь.
Вот и задался я вопросом: Как же ТЕПЕРЬ конвертировать старые SWF игрушки, используя при этом не старый медленный Flash Player 6, а новенький Flash Player 10-13 (по моему версии с 10 по 13 ничем не отличаются).
Вообще в сети есть сторонние конвертеры этого добра, но уж очень интересно было заглянуть им под капот. За одно описать процедуру "для потомков".
Гуглением каких-то китайских сайтов было выявлена следующая (оффициальная) методика, для которой нам потребуется Flash Player с пометкой Standalone (самостоятельный - не требует установки), командная строка, стандартный калькулятор Windows и любой HEX редактор (HxD - норм)
1) Нужно соединить наш Flash Player с нашей swf игрухой. Для этого нужно запустить командную строку и напечатать заклинание "copy /b C:\FP.EXE + C:\ИГРА.SWF rezultat.exe"
Подразумевается, что игруху и плеер мы скинули на диск С для удобства. FP.EXE - плеер, ИГРА.SWF - игра. Нужно указывать имена своих плеера и игры. rezultat.exe - то что у нас получится, но запускаться пока не будет.
2) Далее нужно в конце файла впечатать чудо-маркер, объяснение которому уже, увы, утеряно в глубинах сети. Открываем наш rezultat.exe в HEX редакторе и в самом конце файла вбиваем 4 байта "56 34 12 FA". HEX редактор не закрываем.
3) Теперь нужно в этом же файле, после маркера "56 34 12 FA", вбить размер SWF составляющей.
а) Через проводник смотрим свойства файла C:\ИГРА.SWF. Видим, что игра весит, например, 5,92 МБ (6 209 702 байт)
б) Открываем калькулятор, вид выбираем "Программист". Вбиваем в него число 6 209 702, а затем слева на калькуляторе меняем пункт DEC на HEX. Число превращается в 5EC0A6
в) Возвращаемся в еще не закрытый HEX редактор и допечатываем наше 5EC0A6, но попарно-наоборот. Вбить вы будете должны не 5EC0A6, а A6C05E.
г) Финальным штрихом мы "закрываем" файл, вбив в том же НЕХ редакторе байт "00" в самом конце файла.
Теперь сохраняем наш файл - это будет самостоятельное приложение, которому не нужны ни установленный в системе флеш-плеер, ни SWF файл.
Тут нужно сделать замечание:
*) Размер SWF файла мог быть меньше. Пусть 886 398 байт или D867E. HEX значение имеет нечетное количество знаков. Чтобы его попарно развернуть нужно сделать число знаков четным. Для этого нужно в начале дописать 0. (D867E >> 0D867E >> 7E860D)
Так работали старые версии плеера, так должны работать конвертеры сторонних разработчиков. Я тоже написал конвертер, но пока не выкладываю - не нравится философия всего этого "конвертирования". Иногда SWF файл весит 100-200 килобайт, а к нему приходится приклеивать 5,5 МБ, если Player 10 версии и за 10МБ, если берется 14 версия плеера. Для одного файла ничего, а вот для десятка-двух - неприемлимо.

◘▲▼▲◘◘▲▼▲◘◘▲▼▲◘