Компиляции декомплированного SWF файла
    
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
| Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) | 
    Компиляции декомплированного SWF файла
    
  | 
         
         
         
          
           Сообщ.
           #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 все файлы сами подключатся и проект скомпилируется с ними?  |