Почему инструмент jpexs не работает при декомпиляции SWF-файла? - PullRequest
1 голос
/ 14 марта 2019

Кто-нибудь знает, как декомпилировать файл .SWF?

Я пробовал JPEXS и Sothink SWF Decompiler, но он не работает.

Я поместил это .swf в это ссылка .

Спасибо.

1 Ответ

0 голосов
/ 16 марта 2019

SWF не открывается с JPEXS, потому что он сжат !!.

Первое, что вы должны сделать, когда файл (, например: swf, jpeg, mp3, mp4 ) не открывается ни в одной программе, это проверить, являются ли байты формата исправить с помощью шестнадцатеричный редактор .

Проверка байтов вашего файла:

Обычно SWF-файл начинается с байтов 43 57 53 (, например: "CWS") или даже байтов 46 57 53 (, например: "FWS").

  • Ваш файл начинается с 78 DA 00 43 40 BC BF 43 57 53
    (последние три байта - это ожидаемое 43 57 53 нормального SWF-файла).

  • Эти первые два байта 78 DA означают, что он имеет некоторое сжатие ZLib ( например: как .zip файл).

Решение
Два варианта декомпрессии ZLib. Один - с помощью кода AS3, а другой - с помощью внешнего (Windows) инструмента.

Опция 1 ) Используйте AS3 для распаковки.

  • Получите библиотеку AS3ZLib и скопируйте ее папку as3zlib в то же место, где находятся файлы .as вашего проекта Flash. (Найти папку по адресу: src/com/wirelust/as3zlib/).

  • Загрузка (или чтение) байтов SWF-файла в байтовый массив AS3 с именем fileBytes.

Попробуйте эту логику кода:

import Zlib; //do import of API

....

public var zlibdecomp :Zlib; //create instance variable

....

public var fileBytes :ByteArray = new ByteArray;
public var swfBytes :ByteArray = new ByteArray;

//#  SWF original file bytes load
fileBytes = ... ; //your loading code here

//# Decompress loaded into new SWF bytes
zlibdecomp = new Zlib; //create new ZLIB instance in variable
swfBytes = zlibdecomp.uncompress( fileBytes ); //update with decompress version
trace("swfBytes length (DEFLATED) : " + swfBytes.length); //is 8,617,377 bytes??

Байты в swfBytes теперь могут быть сохранены в виде файла new.swf, и он будет правильно открыт в JPEXS. Используйте API FileReference для сохранения байтов AS3 на диск.

Вариант 2 ) Используйте внешний инструмент ZLib.

Используя OffZip (для Windows OS) вы можете распаковать SWF.
Это прямой файл OffZip . Скопируйте Offzip.exe в папку типа c:\offzip\.

Теперь откройте командную строку, запустив cmd.exe. Введите cd\offzip\ (нажмите enter). В качестве альтернативы просто удерживайте shift и щелкните правой кнопкой мыши папку Offzip, затем выберите «открыть окно командной строки здесь» .

Тип offzip -a vpt.swf (нажмите enter).

image

Вы должны увидеть вывод как это ...

C:\offzip>offzip -a vpt.swf

Offzip 0.4
by Luigi Auriemma
e-mail: aluigi@autistici.org
web:    aluigi.org

- open input file:    vpt.swf
- zip data to check:  32 bytes
- zip windowBits:     15
- seek offset:        0x00000000  (0)

+------------+-----+----------------------------+----------------------+
| hex_offset | ... | zip -> unzip size / offset | spaces before | info |
+------------+-----+----------------------------+----------------------+
  0x00000000 .

................................................................................
................................................................................
................................................................................


................................................................................
................................................................................
.................................................................... 8496131 ->
8617377 / 0x0081a403 _ 0 8:7:26:0:1:2657f334


- 1 valid compressed streams found
- 0x0081a403 -> 0x00837da1 bytes covering the 100% of the file

Теперь выходной файл 00000000.cws можно открыть в JPEXS. Вы можете переименовать это в 00000000.swf.

image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...