Спасибо, правда я не стал добавлять этот продукт не случайно. Есть мнение, что авторами Eltima Flash Decompiler и Amayeta SWF Encrypt являются одни и те же люди. Eltima сойдёт для быстрой правки различных элементов в незащищённых SWF, однако тут может лучше подойти Sothink SWF Quicker, о котором я, к сожалению, забыл упомняуть в статье, в связке с ASV.
Программы в нативном коде прошли все эти этапы эволюционной борьбы «защита-взлом» с десяток лет назад. Результаты неутишительные — защита/обфускация кода выполняемого на стороне клиента практически бессмысленна. Очередной виток. Ну-ну.
Создаём инструменты для обфускации? PROFIT! Ломаем то, что наделали обфускаторы? PROFIT! И т.д. и т.п. А идея проста — защита кода на стороне клиента ненужна.
Тем не менее, не всегда есть возможность подключения сервера к проекту + не всегда требуется защищать ото всех, иногда достаточно оградиться от тех, кто дальше простых декомпиляторов не пойдёт.
Ну и врядли у кого-то возникнет желание воровать обфусцированный код каких-нибудь самописных и очень занятных движков для использования и дальнейшего дописывания «под себя» в своих проектах.
Это собственно привязка не к железу, а к системным параметрам (из Capabilities — screenDPI, screenResolutionX, screenResolutionY), что не айс, ибо поменяться они могут в любой момент.
Я собственно ещё не смотрел, все планировал. Если так, то действительно ерунда. А написали: The project uses MD5 Encryption to generate the serial key, specific to Machine.
Сегодня политика безопаности flash-приложений такова, что ими сложно как-то навредить.
Раз в год находится какая-нибудь уязвимость и где-то неделю все мы под угрозой.
Последний раз можно было обойти разрешение на использование камеры и микрофона.
Вот помнится во времена Flash 5 под Win '98 можно было винт форматнуть :)
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.
Очень круто. Все известные мне способы в одной статье + несколько настоящих ниндзя-техник.
Только почти все можно обойти, если не пользоваться обфускаторами. Я пользуюсь 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» — это классика, которая работает, но не так удобна и интересна, как иные продукты из этой области.
А ещё к методам защиты от декомпиляции можно отнести написание в байткоде валидных с точки зрения AVM2, но невозможных с точки зрения actionScript3 конструкций, таких как например вызов constructsuper из метода. Нормально работает, декомпилируется как super() в коде метода и не компилируется никак. Ещё множество таких конструкций придумать можно.
Способы «защиты» flash-приложений