На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: PIL
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Компиляции декомплированного SWF файла
    Добрый день, уважаемые форумчане.
    Моя система: 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.
    Сообщение отредактировано: Харч -
      У вас там явно Runtime ошибки. А вообще что вам надо в swf поменять? Если только код - то обычно без проблем можно обойтись без перекомпиляции.
        Мне, действительно, надо поменять только код. Но, если честно, я думал наоборот - для смены ресурсов перекомпиляция не нужна, а для смены кода - нужна. Если же нет - подскажите, пожалуйста, как можно менять код, не декомпилируя файл.
        Так же не понял, где runtime ошибки, так как всё по сути декомпилируется и потом компилируется нормально. Другое дело, что не работает :(
        А вот если нет файлов внешних со сценариями - компилируется нормально.
        Сообщение отредактировано: Харч -
          Runtime ошибки на то и Runtime - оно скомпилируется, но ошибки во время выполнения не дадут флешке нормально работать.
          Если вам надо править as3 - RABCDAsm в руки и вперед - править байткод.
            Проблема в том, что в байт-коде надо копаться и искать с помощью отладчика, где и к чему какие инструкции. При декомпиляции же код виден полностью и его легко менять.
            Неужели sothink decompiler неправильно декомпилирует?
            Сообщение отредактировано: Харч -
              Ну так пользуйтесь и декомпилятором и дизассемблером.
              В декомпиляторе найдите код, который хотите изменить, и изменяйте его в дизассемблере на здоровье. Если вам надо поменять половину кода, то конечно такой метод не удобен, но если надо поправить небольшие участки, то вполне пригодный вариант.

              Ну, либо восстанавливайте исходники и исправляйте ошибки декомпилятора, если они есть, чтобы оно нормально заработало. Для этого обычно требуются опеределнные знания и навыки работы с флешом.
                Дело в том, что при компиляции проекта сценарии из внешних файлов просто не вносятся в конечный результат. Если я потом декомпилирую результат компиляции декомпилированного - сценариев в нём уже нет. Вот я и спрашиваю, фактически это вопрос по среде компиляции - как сделать так, чтобы он видел эти файлы?
                  Проверить, прописан ли документ класс, проимпортированы ли нужные классы и т.д. - причин может быть много.
                    Что значит прописан документ класс? все нужные классы импортированы, так как компиляция проходит успешно.
                    Могу кинуть пример проекта. Думаю, во всех таких случаях проблемы одни и те же.
                      Если вы не пропишете документ класс - оно будет компилиться, но только то, что в FLA.
                      Мне сейчас некогда будет смотерть, но лучше все равно выложить проблемный проект - может у кого-то найдется время, ну или я как освобожусь погляжу.
                        Окей, выкладываю. И проект, и исходную флешку.
                        При декомпиляции 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 файл: user posted image
                        Его конвертация в FLA (плюс результат публикации около файла проекта): user posted image

                        После компиляции проекта он получается как ролик, не содержит сценариев. Я декомпилирую потом скомпилированный мною файл и получаю чисто FLA файл с ресурсами, БЕЗ файлов со сценариями.
                        Сообщение отредактировано: Харч -
                          Ага, а зачем AS 1.0 поставили? AS3 - координально отличается от 1-2. Если в swf изначально as3 - надо его и оставить в настройках паблиша.
                            Дело в том, что при AS3 он не компилируется и выдаёт кучу ошибок. Причём вроде бы AS3 стоит по умолчанию на всех декомпилированных. На AS1 он спокойно компилирует. Аналогичная ситуация была с другим SWF файлом, который декомпилировался БЕЗ внешних сценариев, всё внутри FLA было. Там так же стоял AS2 и Flash 6. Он не компилировался. Поменял на AS1 - стал компилиться, но не работал. Поменял на Flash 5.0 и AS1 (точнее на AS1 он сам поменялся) - отлично скомпилировалось и заработало.
                              В этой SWF код на as3 - надо исправлять ошибки декомпилятора, и не забудьте про шрифты, если вам нужно восстанвоить флешку качественно.
                              Я посмотрел проект - восстановить его вполне можно, но у меня нет на это свободного времени. Либо обращайтесь к специалисту, кто сделает это платно, либо правьте байткод, если не весь код переписать вам там надо.
                              Ну или пытайтесь допилить все сами, если есть на это время и тяга к новым знаниям.
                                Разумеется, я буду пилить всё сам :)
                                Но тогда я не понимаю - почему выскакивают ошибки на AS3, на AS1 всё отлично?
                                И при исправлении ошибок AS3 все файлы сами подключатся и проект скомпилируется с ними?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1550 ]   [ 15 queries used ]   [ Generated: 28.03.24, 20:10 GMT ]