Pull to refresh

Comments 33

Спасибо, правда я не стал добавлять этот продукт не случайно. Есть мнение, что авторами Eltima Flash Decompiler и Amayeta SWF Encrypt являются одни и те же люди. Eltima сойдёт для быстрой правки различных элементов в незащищённых SWF, однако тут может лучше подойти Sothink SWF Quicker, о котором я, к сожалению, забыл упомняуть в статье, в связке с ASV.
Вау, не знал, что там такой скандал. Я далек от темы Flash, просто хотел поддержать ребят из родного города.
Давно на Хабре таких классных статей по данной тематике не было. Спасибо вам!
Программы в нативном коде прошли все эти этапы эволюционной борьбы «защита-взлом» с десяток лет назад. Результаты неутишительные — защита/обфускация кода выполняемого на стороне клиента практически бессмысленна. Очередной виток. Ну-ну.

Создаём инструменты для обфускации? PROFIT! Ломаем то, что наделали обфускаторы? PROFIT! И т.д. и т.п. А идея проста — защита кода на стороне клиента ненужна.
Тем не менее, не всегда есть возможность подключения сервера к проекту + не всегда требуется защищать ото всех, иногда достаточно оградиться от тех, кто дальше простых декомпиляторов не пойдёт.
Ну и врядли у кого-то возникнет желание воровать обфусцированный код каких-нибудь самописных и очень занятных движков для использования и дальнейшего дописывания «под себя» в своих проектах.
Очень хороший и подробный обзор, огромное спасибо!
Мог бы, плюсанул бы )
В избранное и перечитать ещё раз по внимательней обязательно )
Вот самая надежная защита — привязка к железу. Это конечно ограничивает пользователя и тоже можно взломать, но как вариант.

Библиотека для Flex и Air

code.google.com/p/codegenas3/
Это собственно привязка не к железу, а к системным параметрам (из Capabilities — screenDPI, screenResolutionX, screenResolutionY), что не айс, ибо поменяться они могут в любой момент.

Полноценной привязки к железу у флеша нет.
Я собственно ещё не смотрел, все планировал. Если так, то действительно ерунда. А написали: The project uses MD5 Encryption to generate the serial key, specific to Machine.
UFO just landed and posted this here
ждём статью «способы защиты от flash приложений»
Сегодня политика безопаности flash-приложений такова, что ими сложно как-то навредить.
Раз в год находится какая-нибудь уязвимость и где-то неделю все мы под угрозой.
Последний раз можно было обойти разрешение на использование камеры и микрофона.
Вот помнится во времена Flash 5 под Win '98 можно было винт форматнуть :)
Есть еще Flasm — обфускатор.

Flasm is a free command line assembler/disassembler of Flash ActionScript bytecode. It lets you make changes to any SWF. Flasm fully supports SWFs produced by Macromedia Flash 8 and earlier Flash versions.

Бесплатный.
К сожалению, оно только с AS2 работает, и это не обфускатор, а асм\дизасм байткода…
Очень круто. Все известные мне способы в одной статье + несколько настоящих ниндзя-техник.
Только почти все можно обойти, если не пользоваться обфускаторами. Я пользуюсь SWF Encrypt, доволен.
Я тоже им пользуюсь, но после этой статейки как то не очень он мне уже.
Очень интересно получается, только что обошёл url-lock в своей игре обфусцированной SWF Encrypt при помощи Yogda.
На всё про всё, меньше 5 минут.
Совсем плохо (((
Спасибо за статью! Очень все обобщенно и понятно. Единственное хотел добавить несколько вещей:

1. Лучше писать свои утилиты по защите и не выкладывать их в общий доступ.

2. Делать комплексную защиту с множеством вложений. Потому как если защищать одним способом то его достаточно просто взломать.

3. Есть идея загрузчика с кучей тегов DefineBinaryData, картинок, текста, чисел. Загрузчик составляет результирующий swf из кучи картинок, тегов, строк, чисел(естественно написать надо утилиту которая генерирует такой код). Все шифровать ключами, которые тоже не хранить в открытом виде, тоже шифровать с большой вложенностью в нескольких вложенных swf. Проверять контрольные суммы тегов и swf. И самое главное — сделать так что если даже из памяти и выдерут результирующий swf то он не будет работать, т.к. надо обеспечить плотную работу с загрузчиком. Т.е. и сам загрузчик+оригинальный не будет работать на определенном домене, так и оригинальный swf не будет работать вообще.

То, что доктор прописал. Про генерацию байткода вообще не знал.
Отличнейший подбор, но ничего не поможет, игры, особенно клиент-серверные так и будут коммуниздить.
Кстати, отчего не упомянули их в обзоре? Самые большие баталии воров и авторов, как мне кажется, происходят именно на этом поле — там тоже раздолье: уже не передают информацию в открытую через 80 порт, все шифруют/солят, добавляют в ответ и запрос неверные/ничего не значащие параметры и т.п.
В этой статье я старался писать больше о самом клиенте, чем о клиент-серверном взаимодействии, да и в количестве текста был ограничен, т.к. хотел всё в один пост уместить, чтобы не разбросано было, но всё равно, спасибо, что заметили про шифрование трафика — это, безусловно, также относится к средствам защиты во flash.
as3abc собирать не позволяет. Только парсить. Шедевральный дизассемблер/ассемблер это rabcdasm, регулярно пользуюсь, быстрый, простой, показывает и cinit и scripts. Он гораздо мощнее чем yogda и тем более nemo404. Ну и как же не упомянули abcdump с ключом -D
Спасибо за полезный комментарий! Добавлю таки rabcdasm в список инструментов (я не хотел изначально включать в инструментарий консольные приложения). А «abcdump с ключом -D» — это классика, которая работает, но не так удобна и интересна, как иные продукты из этой области.
кстати не abcdump а swfdump, опечатался.
Угу, но я вас понял, вы ведь про Flex SDK'шный говорили, там только один dump был)
А ещё к методам защиты от декомпиляции можно отнести написание в байткоде валидных с точки зрения AVM2, но невозможных с точки зрения actionScript3 конструкций, таких как например вызов constructsuper из метода. Нормально работает, декомпилируется как super() в коде метода и не компилируется никак. Ещё множество таких конструкций придумать можно.
Sign up to leave a comment.

Articles