![]() |
Способы защиты флешки
Наверное, тема поднималась где-то столько же раз, как и великие вопросы вроде "как загрузить картинку", но все же есть в ней неизведанные аспекты :). Итак, что мы можем сделать для защиты от атаки с заменой кода приложения:
1. Обфускация - непрерывная война декомпиляторов и обфускаторов, наверное, уже всех задолбала :) Кроме того, есть риск получить нерабочий код, особенно если использовать crossbridge(alchemy). Иногда, по непонятным причинам, в secureSWF ломается сериализация bindable-объектов. Ну и алгоритмы всегда можно понять, плюс достаточно любой современной IDE с утилитами для рефакторинга, чтобы конвертировать выражения обфускатора в понятные человеку названия. 2. Декодирование swf, зашифрованного XOR, или любым другим алгоритмом с зкарытым ключом при помощи приложения на crossbridge - предполагается что ключ с байткода, сгенерированного flasCC, вытянуть либо сложно, либо невозможно. Так ли это? Кроме того, наше приложение всегда можно достать с дампа оперативной памяти... 3. Использование CWS-сжатия(интегриреум основное приложение в приложение-контейнер как embed SWF). Помогает только если взломщик не подозревает о таком "грязном трюке". Но весь великий социалистический Китай в курсе - чтобы добратся до заветной флешки, нужно вытянуть бинарные данные, открыть в 7zip получившийся выхлоп, и вытянуть оттуда приложение в лапы декомпилятору... Итак, вопрос: известны ли кому еще какие-то методы защиты кода от просмотра и изменения(сборки рабочего приложения с модифицированным кодом)? Вопрос касается только атаки на клиент, предполагается что все нужные ключи хранятся на сервере, логика геймплея там же, ключи доступа действуют на протяжении одной сессии - в общем, полный набор защиты клиент-серверного взаимодействия. Также вопрос несет теоретический характер - просто интересно, имеет ли смысл поискать способ добавить головной боли любителям декомпиляции :) |
Просто берёте и считаете упущенные прибыли от взлома клиента и затраты на его защиту. И понимете что никому код ваш совершенно не нужен. Нельзя так просто взять и украсть. Ну декомпильнут, и? Компьютер клиента это собственность клиента, и то, что он по своей безграмотности, обычно не знает, что делают там программы, не даёт вам право думать и делать что-то, что клиент не имеет возможности понять. Короче, спуститесь на землю, пойните что код сам по себе ничего не стоит, и займитесь уже полезным делом и разработкой, а не защитой ещё не доказавшего свою жизнеспособность продукта.
|
2Aquahawk
Цитата:
P.S. Еще раз, на всякий случай - я не спрашиваю, как мне защитить какое-то конкретное мега-приложение "Змейка-2", а интересуюсь современными способами защиты приложений, в теории. |
От дампа никак не защититься.
В том-то и отличие клиентских веб-языков от серверных, что вытащить можно всю логику и весь контент, выполняемые на стороне клиента. Да, можно их зашифровать, обфусцировать и т.п. и т.д., но если уж очень сильно что-то там будет важное, так или иначе вытащат. И защиты от этого нет в силу особенностей самого языка AS. Поэтому вопрос прост. Либо вам нужно скрыть какие-то алгоритмы и технологии, и нужно писать логику на стороне сервера, либо скрывать нечего, и можно спать спокойно. |
Я задумывался о защите флешек, когда только начинал изучать AS, дабы круто же, мой супер код защитить, от кул хацкеров. На самом деле это смешно, и вы поймете это позже. Что у вас там такого секретного, что надо защищать код? Все важные детали : ключи, ссылки, пароли и т.п. держаться на сервере - это закон, а у вас то там что? Может быть алгоритмы создания водородных бомб? Нет ? Тогда - не партесь - любой код который у вас, напишет и другой разработчик - ломать там нечего. Ну, а если водородная бомба - то я сомневаюсь, что вы бы стали писать на данном форуме, нашлись бы люди которые сделали из вашей флешки такой венегрет, что 100500 программ бы с ней не разобрались. Обратитесь в ФСБ )))
|
Мой главный вопрос к ТС, а зачем это нужно?
Если приложение коммерческое, и есть прямая выгода от того, что приложение защищено, это один вопрос. Но там как правило без сервера и не обходится, Но если это просто stand-alone казуальная игрушка, то зачем ее защищать? Я всегда уважал разработчиков, которые не обфусцируют и никак другим способом не защищают свои игры и приложения. Когда только начинал изучать ас3, я много таких игр скачивал и декомпилировал. Не для того, чтобы красть и делать клоны. Я не сделал ни одного клона, ни с одной игры, которую мне доводилось декомпилировать, но многому научился изучая их код. Кто бы там что не говорил, но уроки, которые можно найти в нете, как правило гораздо примитивнее готовых игровых проектов (да и не только игровых). Поэтому что плохого в том, что кто-то декомпильнет вашу флешку и посмотрит как она работает? |
Ребят, я же несколько раз повторил - вопрос теоретический :) Я в основном разрабатываю под Android, там проблема декомпиляции еще более актуальна, и ничего, как-то живу. И чужие приложения доводилось декомпилировать, чтобы понять какие-то хитрые хаки, которые разработчики применяли(в основном - всяческие алгоритмы оптимизации). И попадались в этих приложениях зашитые приватные ключи, токены, логика, которую, по-хорошему на сервер выносить нужно, реализация in-app purchase без валидации, и т.п. - и люди не парятся, хотя по этому поводу стоило бы. Я осведомлен о необходимых мерах защиты клиент-серверного взаимодействия, спасибо. Я же не спрашивал "как вы думаете, нужно ли мне обфусцровать мой невероятно крутой алгоритм умножения 2 х 2?"...я спросил, какие есть методы защиты, о которых я не знаю, просто для копилки знаний. Да, и что перечисленые в нулевом посте методы защиты неэффективны я тоже написал уже, не стоит стараться меня в этом же самом убеждать :)
|
Наверное, читали.
Но лучшего описания не видел: http://habrahabr.ru/post/110686/ Хотя обзору и 2 года, но учитывая как flash "развивается", то практически всё актуально. |
Спасибо, это уже по делу :) Вроде попадалась эта статья, но некоторые моменты, вроде memory spam, успешно забыл. А касательно "развития" - бинарники JIT-компилируемых языков обычно намного проще разобрать до исходников, попробуйте проделать то же самое с кросс-компилированным бинарником под iOS, который получаем при разработке под AIR.
|
Цитата:
|
| Часовой пояс GMT +4, время: 21:26. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.