Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.86.184] |
|
Сообщ.
#1
,
|
|
|
Добрый день, уважаемые форумчане.
Моя система: Windows 8 x64. Решил попробовать декомпилировать SWF файлы и изменять их. Раньше я это делал flasm16win декомпилятором, смотрел код, состоящий из инструкция на уровне ассемблера (как я понял), и менял некоторые куски. Но этот декомпилятор декомпилировал не все SWF файлы. Я поискал и нашёл конвертеры SWF в FLA. А именно Trillix и Sothink SWF Decompiler (везде качал последние версии). Первый у меня не смог декомпилировать многие файлы (просто падал с ошибкой). Второй отлично конвертирует. Далее, я открываю полученный проект в Adobe Flash Professional CS6, а дальше начинаются проблемы. Первая такая: прямо с нуля ничего не компилируется, выдаются ошибки, надо подбирать правильную версию Flash и Action Script. Но это ладно, подбираю, не страшно, так же исправляю пару ошибок со скобками и синтаксисом. Всё компилируется нормально. Но далее - те проекты, где декомпилируется так, что Action Script сценарии лежат в отдельных файлах (а не в .fla файле), он компилирует, но при запуске либо повторят 5 начальных кадров, либо ничего не показывает. В самом .fla файле на таймлайне в данных проектах и находятся те 3 - 4 кадра, которые он показывает. Не очень понимаю, что делать в данном случае. Может, я что-то не так компилирую? Помогите, пожалуйста. Спасибо! P.S. сам я на флеше не программировал никогда, в этой среде не работал. Сами сценарии менять могу, так как более 8-ми лет занимаюсь программированием на таких языках, как C++, PHP, JavaScript. |
Сообщ.
#2
,
|
|
|
У вас там явно Runtime ошибки. А вообще что вам надо в swf поменять? Если только код - то обычно без проблем можно обойтись без перекомпиляции.
|
Сообщ.
#3
,
|
|
|
Мне, действительно, надо поменять только код. Но, если честно, я думал наоборот - для смены ресурсов перекомпиляция не нужна, а для смены кода - нужна. Если же нет - подскажите, пожалуйста, как можно менять код, не декомпилируя файл.
Так же не понял, где runtime ошибки, так как всё по сути декомпилируется и потом компилируется нормально. Другое дело, что не работает А вот если нет файлов внешних со сценариями - компилируется нормально. |
Сообщ.
#4
,
|
|
|
Runtime ошибки на то и Runtime - оно скомпилируется, но ошибки во время выполнения не дадут флешке нормально работать.
Если вам надо править as3 - RABCDAsm в руки и вперед - править байткод. |
Сообщ.
#5
,
|
|
|
Проблема в том, что в байт-коде надо копаться и искать с помощью отладчика, где и к чему какие инструкции. При декомпиляции же код виден полностью и его легко менять.
Неужели sothink decompiler неправильно декомпилирует? |
Сообщ.
#6
,
|
|
|
Ну так пользуйтесь и декомпилятором и дизассемблером.
В декомпиляторе найдите код, который хотите изменить, и изменяйте его в дизассемблере на здоровье. Если вам надо поменять половину кода, то конечно такой метод не удобен, но если надо поправить небольшие участки, то вполне пригодный вариант. Ну, либо восстанавливайте исходники и исправляйте ошибки декомпилятора, если они есть, чтобы оно нормально заработало. Для этого обычно требуются опеределнные знания и навыки работы с флешом. |
Сообщ.
#7
,
|
|
|
Дело в том, что при компиляции проекта сценарии из внешних файлов просто не вносятся в конечный результат. Если я потом декомпилирую результат компиляции декомпилированного - сценариев в нём уже нет. Вот я и спрашиваю, фактически это вопрос по среде компиляции - как сделать так, чтобы он видел эти файлы?
|
Сообщ.
#8
,
|
|
|
Проверить, прописан ли документ класс, проимпортированы ли нужные классы и т.д. - причин может быть много.
|
Сообщ.
#9
,
|
|
|
Что значит прописан документ класс? все нужные классы импортированы, так как компиляция проходит успешно.
Могу кинуть пример проекта. Думаю, во всех таких случаях проблемы одни и те же. |
Сообщ.
#10
,
|
|
|
Если вы не пропишете документ класс - оно будет компилиться, но только то, что в FLA.
Мне сейчас некогда будет смотерть, но лучше все равно выложить проблемный проект - может у кого-то найдется время, ну или я как освобожусь погляжу. |
Сообщ.
#11
,
|
|
|
Окей, выкладываю. И проект, и исходную флешку.
При декомпиляции sothink swf decompiler рекомендовал делать это в CS4 (я принял его рекомендацию). Конвертировал в FLA. Анализ точности движения высший. Далее открыл в CS6 и изменил параметры публикации так (было: Flash Player 11.4, Action Script 3.0; стало: Flash Player 11.4, Action Script 1.0), чтобы компилировалось без ошибок. Результат публикации так же лежит в корне проекта. P.S. открыл консоль разработчика ( F9 ) и там не нашёл ни одного сценария. Все сценарии лежат в файлах около .fla файла (ну и в подпапках). Исходный SWF файл: Его конвертация в FLA (плюс результат публикации около файла проекта): После компиляции проекта он получается как ролик, не содержит сценариев. Я декомпилирую потом скомпилированный мною файл и получаю чисто FLA файл с ресурсами, БЕЗ файлов со сценариями. |
Сообщ.
#12
,
|
|
|
Ага, а зачем AS 1.0 поставили? AS3 - координально отличается от 1-2. Если в swf изначально as3 - надо его и оставить в настройках паблиша.
|
Сообщ.
#13
,
|
|
|
Дело в том, что при AS3 он не компилируется и выдаёт кучу ошибок. Причём вроде бы AS3 стоит по умолчанию на всех декомпилированных. На AS1 он спокойно компилирует. Аналогичная ситуация была с другим SWF файлом, который декомпилировался БЕЗ внешних сценариев, всё внутри FLA было. Там так же стоял AS2 и Flash 6. Он не компилировался. Поменял на AS1 - стал компилиться, но не работал. Поменял на Flash 5.0 и AS1 (точнее на AS1 он сам поменялся) - отлично скомпилировалось и заработало.
|
Сообщ.
#14
,
|
|
|
В этой SWF код на as3 - надо исправлять ошибки декомпилятора, и не забудьте про шрифты, если вам нужно восстанвоить флешку качественно.
Я посмотрел проект - восстановить его вполне можно, но у меня нет на это свободного времени. Либо обращайтесь к специалисту, кто сделает это платно, либо правьте байткод, если не весь код переписать вам там надо. Ну или пытайтесь допилить все сами, если есть на это время и тяга к новым знаниям. |
Сообщ.
#15
,
|
|
|
Разумеется, я буду пилить всё сам
Но тогда я не понимаю - почему выскакивают ошибки на AS3, на AS1 всё отлично? И при исправлении ошибок AS3 все файлы сами подключатся и проект скомпилируется с ними? |
Сообщ.
#16
,
|
|
|
Потому, что ошибки в as1 и as2 никак не отображаются. Это, кстати, относится к окончанию последнего предложения.
Если проект настроен корректно (пути до классов прописаны нормально, документ класс указан и проч.), то после исправления ошибок (если все исправить как надо) оно должно скомпилироваться нормально, ну, если декомпилировалось более-менее корректно (декомпиляторы иногда такое выкидывают!). |
Сообщ.
#17
,
|
|
|
Гм, хорошо, попробую. Спасибо.
|
Сообщ.
#18
,
|
|
|
Приветствую. Не некропост, но новый виток темы: собираюсь использовать связку JPEXS + Intellij Idea. Очень неплох JPEXS, но хотелось бы ускориться в прогрессе с помощью Idea. Вопрос встал пока- как собрать разобранный файл, игнорируя ошибки.
|
Сообщ.
#19
,
|
|
|
Просят в яндексе следующее “у флэша не прописан фон, его нужно прописать в обвязке swf-файла». Где это прописывается? Если можно поподробнее объясните, а то я новичок…
|
Сообщ.
#20
,
|
|
|
Sothink SWF Decompiler служит для декомпиляции получения исходника не всегда сохраняющего работоспособность или извлечения ресурсов картинок, спрайтов, звуков. После декомпиляции получают файл формата флеш - fla. В нем меняют картинку на нужную и компилируют в среде разработки, т.е. FLASH MX, 8, CS3, CS4.
|