Анализаторы: SWF iD - первый и единственный анализатор для SWF, позволяет выяснить чем накрыта флэшка, имеет встроенный дампер флэшек с отсевом фэйков.
Работа с байткодом\тэгами: RABCDAsm - асм/дизасм байткода, опенсорс (as3). Редактор на базе RABCDAsm - удобный редактор с подсветкой и сворачиванием блоков. WinRABCDAsm - ещё один GUI для RABCDAsm, на этот раз более практичный - можно использовать с любой версией RABCDAsm. RABCDAsm mod - удобная редакция RABCDasm от местного обывателя JohnyDoe, позволяет разбирать\собирать swf простым перетаскиванием на основной exe, с автоматической деобфускацией имён и некоторой чисткой от мусора. SWF Reader - позволяет править все тэги и данные в swf, содержит декрипторы\депротекторы, разработка прекращена. FlashHacker - инструмент на основе RABCDAsm для работы с байткодом, сделан для исследователей малвари.
Автоматизированное снятие защит SWF Decrypt - снимает старые версии Amayeta SWF Encrypt и DComSoft SWF Protector (офсайт сдох). + уже упомянутые: ASV, FFDec, RABCDAsm mod и SWF Reader.
Дапмеры\Распаковщики (для тех, кому лень руками) SWF Revealer Ultimate - самый продвинутый из автоматических инструментов данного типа, вытащит все, что проиграется в локальном проигрывателе. Платный, количество лицензий ограничено. Есть ещё обычный SWF Revealer, который входит в комплект ASV. Тоже весьма прокачанный распаковщик, работает по другому принципу. SWF Memory Dumper - бесплатный и простой дампер. Sothink SWF Catcher - умеет вытаскивать swfки из кэшей браузеров и искать их в памяти процессов (ru-board). + уже упомянутые: SWF Reader, SWF iD.
Разное Sulo - дополнение к Intel Pin kit. Может трейсить инструкции (пример), дампить всё что загружается с помощью loader.loadBytes() и расшифровывать SecureSWF строки. За скомпилированный бинарь 1 спасибо JohnyDoe, еще компилил OKOB, но ссылка сдохла.
Доки \ маны AVM2 Overview - описание вирт. машины для as3 с опкодами и проч. SWF File Format Specification - спецификация формата swf (строение, расположение тэгов и проч.).
Debug-версии Flash Player - тут. Они позволяют трейсить и отлаживать код (см. описание AS3Trace и AS3Verbose тут).
----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.
4kusNick пишет: http открыть если есть возможность Практически на всех серверах принудительно устанавливается защищенное соединение. Как минимум нужно сделать это: т.е. включить SSL проксирование + добавить необходимые домены (хост+порт), которые используют защищенное соединение.
Для начала попробуй оригинальную флешку подсунуть, вместо исправленной. Надо хотя бы понять работает маппинг или нет.
Далее нежно класс смотреть, на который плеер ругается и разбираться почему не найден необходимый объект. На самом деле, если ошибка не приводит к неработоспособности приложения, ее можно пропустить.
Уверен что твоя флешка той же версии, что и на сервере? А то ведь уже могли быть внесены изменения. Или например флешку обфусцировали и твоя флешка обращается не к тому свойству.
JohnyDoe Флешка вообще может грузиться с другого сервака прелоадером, а путь к ней парсится из txt/html документа какого-нибудь, как это можно реализовать в VK Api, тогда никакой маппинг вам не поможет.Хотя..
Isaev Попробуй заюзать прокси в FFDec тогда или подменить в браузерном кэше (самый "прямой" и надёжный способ, если не используется анти-кэш). Ещё оно после этой ошибки точно крашится? Во флэшках зачастую бывает куча ошибок, которые видны только в отладочном проигрывателе и которые никак не сказываются на работоспосоности в конечном итоге...
----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.
4kusNick пишет: или подменить в браузерном кэше (самый "прямой" и надёжный способ, если не используется анти-кэш). пожменить в чём ещё можно? JohnyDoe писал про старые оперы, в ней не работает флешка, опера падает при загрузке, а в новой нет кнопки "применить изменения". в других браузерах это как делается? 4kusNick пишет: Ещё оно после этой ошибки точно крашится? она появляется и всё висит, нет возможности нажать кнопку пока процесс не убьёшь FFDec пока не пробовал
Ну, я не знаю. Только что сделал то, что ты пытаешься сделать, чтобы проверить как все сработает. Никаких проблем не возникло. Клавишу открытия игровой консоли сменил и массив скинул в лог.
Игра встроена через iframe, грузится через wrapper.swf. Флешка получает параметры через строку адреса. Все сработало без каких-либо проблем.
Isaev пишет: пожменить в чём ещё можно? В IE например. Кэш у него лежит в открытом виде, просто почисть перед тем как загружать игру, затем после загрузки глянь какие swf там появились и без труда найдёшь свой главный swf.
Isaev пишет: она появляется и всё висит, нет возможности нажать кнопку пока процесс не убьёшь Это на баг FP или лисы похоже, попробуй поставить последнюю версию FF и последнюю FP. Если всё и так последнее - попробуй поставить FP постарее, 14й там какой-нибудь например.
JohnyDoe ЧИТД
----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.
JohnyDoe пишет: Только что сделал то, что ты пытаешься сделать, чтобы проверить как все сработает. я и не сомневался в твоих способностях) ты ещё в vk попробуй и я вообще разочаруюсь... Вроде всё по шагам уже не раз прошёл сначала. Или я что-то упускаю или в vk какая-то особенность есть в работе врапперов. Пойду пробовать на майле пока.
к сожалению я больше не знаю чем помочь. Меня только смущает ошибка, которая у тебя вылезает. Обычно ошибки связаны с NullReference, а у тебя плеер ругается на то, что поле wrapper вообще не существует в объекте.
вопросик ещё такой... когда флеш работает, можно программкой найти его в памяти и посмотреть нужные данные самому программно? может кто делал что подобное?
4kusNick пишет: все сильно зависит от того что именно нужно посмотреть. помелочам... байт, слово, строку, значение какой-то переменной, которая постоянно меняется в процессе работы игры... Интересен общий принцип через трейс всё работает, но не удобно пользоваться
Isaev Если без трейсинга, то только публичные поля можно посмотреть вроде, хотя могу ошибаться, я уже давно не пробовал так данные смотреть. Обычно я использовал либо FlashFirebug, либо консоль в TheMiner.
----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.
Из своего кода - только если кодить аналог вышеперечисленных инструментов. По сути нужно закодить свой загрузчик и из него уже дотягиваться до нужных мест. В любом случае, задача нетривиальная и может просто не стоить потраченного на нее времени.
----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.
4kusNick, а как же читерские программки, которые патчат в памяти пару байт... Нужно по идее то же самое, только вместо патча, показать их содержимое. И весят они поло обычно все, не думаю, что для них писали "аналог вышеперечисленных инструментов"
Isaev Эти программки работают по принципу AoB читов для CheatEngine - они просто патчат байткод в памяти, меняя поведение программы, никакие данные таким образом получить не получится.
----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.
Какая-нибудь из утилит показывает расшифрованые строки при SecureSWF обфускации строк? Вроде многие работают с этой защитой, но нигде не нашёл этой функции. Её нет или я просмотрел?
4kusNick а из чего эти dll юзаются? И aes я там не заметил в сырках, версия, которая без aes была я и сам деобфусцировал, а эту лениво... Хотя если не найду что покажет строки, придётся рипать
Isaev Через интеловский Pin, там в репе описано как завести (https://github.com/F-Secure/Sulo/). Модуль для логгирования строк работает универсально, насколько помню - надо сообщить ему имя метода, который расшифровывает строки и он будет его же и использовать для расшифровки.
Я обычно вручную так же делал - либо дёргал метод расшифровки, либо просто в него трейс впатчивал, чтобы видеть результат расшифровки каждой строки в логе.
----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.
Isaev, 4kusNick, JohnyDoe Не поделитесь своими наработками в виде какого-нть тутора? Для тех, кому тоже интересно, но опыта с флешем не хватает. Имхо, подобное было бы весьма полльзительно узнать/попробовать ) Или, может, FlashFirebug может кто поделиться леченным?