xmoonlight: Вот этот загрузчик cache.hackedonlinegames.com/uploads/games/files/60... грузит конечную флеху в себя. Потом дергает у него ссылку на класс com.source.Universe так как класс Universe синглтон, то у него дергается статический метод getInstance() который возвращает экземпляр класса Universe.
У этого класса есть поля
vicdefpanel - экземпляр VictoryDefeatPanel с методами FinalScene() и Victory()
_bases - экземпляр Controller с полем obj (нетипизированный массив поэтому мне дальше лень смотреть, если кратко то всем оъектам в нем с force == 1 увеличивают countcur на 10)
xmoonlight: Также можно глянуть www.monsterdebugger.com
Чтобы задействовать, можно сделать свою swf с подключенным монстердебаггером, которая будет грузить уже чужую флешку в себя, находить в ней класс-точку входа и добавлять экземпляр этого класса на сцену. Но данный способ не подойдет к хоть насколько то защищенной флешке.
xmoonlight: Частичный декомпил/правка байт кода. По сути для работы на другом сайте нужно вырезать проверку домена на котором запускается флешка (иногда это можно сделать даже обычным блокнотом).
xmoonlight: Статье 7 лет. Имхо инфа устарела. getURL fsCommand SetVariable это все из эпохи as2. Просто у флеша все очень хорошо с обратной совместимостью и это будет работать и сейчас, но зачем, когда есть externalinterface ?
xmoonlight: Тыкнул в несколько swf на этом сайте. Все состоят как минимум из загрузчика и основной swf.
Если использовать гугловский флеш, то в консоли браузера можно отслеживать какие данные flash грузит.
Любое приложение должно работать хотя бы в ограниченном режиме без js вообще (ну или хотя бы первичная загрузка страницы) и тем более без history api.
History Api и прочие модные фиговины должны включаться только когда доступны и способствовать улучшению юзабилити и ускорению загрузки. Но без них приложение не должно становиться неработоспособным.
То есть на бекенде нужно реализовать два вью слоя.
Один классический - рендерим страницу и отдаем её на клиент целиком.
Второй рендерит данные (например в json) который грузиться через js и используется для частичного обновления страницы.
Получается что при заходе на адрес в первый раз мы грузим классический вью. А дальше если доступен history используем второй.
Определить какой из вью нужно отдавать клиенту можно через посыл доп заголовков, на этом принципе например работает pjax. https://github.com/defunkt/jquery-pjax (подобных плагинов куча, гуглите)
У этого класса есть поля
vicdefpanel - экземпляр VictoryDefeatPanel с методами FinalScene() и Victory()
_bases - экземпляр Controller с полем obj (нетипизированный массив поэтому мне дальше лень смотреть, если кратко то всем оъектам в нем с force == 1 увеличивают countcur на 10)