Заставляем Sothink SWF Decompiler понимать Stage3D

Привет всем! Для тех или иных целей, многие из нас пользуются Sothink SWF Decompiler для понимания структуры готовых swf роликов.
Сейчас, в виду роста популярности Stage3D — у меня есть потребность в понимании как устроена та или иная шейдерная программа сторонних разработчиков. Что же мы видим, когда запускаем готовый SWF ролик в Sothink SWF Decompiler, который использует аппаратное ускорение? Ничего!
На экране плеер выкидывает не хитрую ошибку Error #2044: Необработанный ErrorEvent:. text=Error #3702: Класс Context3D недоступен.

Это связано с тем, что в системе приложение использует Flash ActiveX, который надо настраивать на этапе создания программного обеспечения. О чем не позаботились ребята из Sothink. Значит, у нас есть шанс «поправить» вызов этого ActiveX простым хардкодным способом.

Для тех, кто еще не в теме — чтоб заставить Flash использовать аппаратное 3Д ускорение в HTML, нам надо прописывать параметр wmode равный direct.
В противном случае, мы увидим ошибку Класс Context3D недоступен. А что же касается встраиваемых ActiveX — в приложения, то они тоже могут иметь те же параметры. А некоторые просто обязаны иметь.

И так, нам понадобится:

1) Любой hex редактор или текстовый, который не искажает данные при сохранении. Для конкретного случая нам подойдет бесплатный notepad++ если у нас нет HEX редактора

2) Открываем в Notepad++ файл SWFDecompiler.exe который является самим приложением, требующим внесения нашей медицинской помощи

3) Опытным путем, я нашел место установки параметров для Flash Player ActiveX, который использует Sothink SWF Decompiler. Остается теперь банально поправить бинарный файл. Чтоб не путать и не рассказывать что да как — делаем простейшую инструкцию:

— Нажимаем ctrl+f и ищем строку gUfU. Нам повезло в том, что она там одна
— Переводим курсор клавиатурой вправо примерно на 40 символов и видим надпись NULWNULiNULnNULdNULoNULwNUL
Параметр window
Если присмотреться — мы видим Window
— На клавиатуре нажимаем insert для замены символа без добавления следующего и меняем Window на direct
Параметр window

Нам сильно повезло с тем, что Window и direct обладают одинаковым количеством букв и мне не приходится рассказывать как делать плохие вещи :)

В итоге, сохранив файл под старым имемем — мы можем запускать в декомпиляторе нашу флешку, которая ругалась на Класс Context3D недоступен и наблюдать как она работает.
Версия Sothink SWF Decompiler
Данный материал был подготовлен с использованием Sothink SWF Decompiler 7.2 сборки 4842, однако ничего не должно было поменяться в соотношении со старыми версиями. По-этому дерзайте и у Вас получится.

Так же Вы должны быть уверенны, что у Вас используется Flash Player ActiveX версии 11.2 и выше. Чтоб понять какой используется — просто запустите Sothink SWF Decompiler и нажмите правую кнопку мишки на области, где загружается флеш. Если там не 11.2, то обновите ActiveX

Копирование материалов на другие сайты разрешаю с предварительным согласованием через личные сообщения

Комментарии (6)

0
просто ОФИГЕТЬ!!! :)
+5
Китайцы среди нас? Учим воровать игры?
+2
узко мыслишь
+2
Если бы я написал статью про дизассемблинг и ассеблинг abc фрагментов кода из флеша — то да :) А так эту тему я не хочу поднимать :) Хотя могу согнуть любую флешку :)
+3
0
всегда есть способ взлома!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.