Флеш игры взломать, оценка 49700 Как улучшить безопасность флеш игр?

У меня 2 флеш игры (написано в as3). Оба рекорда были взломаны. Нормальный диапазон очков каждой игры не более 5000 (обычные пользователи получат только 2000 - 3000 очков). Мой текущий метод борьбы со взломом:

После завершения игры флэш будет использовать параметры записи send: username = mike &оценка = 2000 &хэш = md5 (секрет. имя пользователя. оценка). На странице php, я сделал проверку, если хэш! = Md5 (секретный. Имя пользователя. Оценка), он вернет ошибку, и не будет вставлять данные в базу данных.

Я считаю, что этого метода недостаточно, иначе мои флеш-игры не будут взломаны. Есть ли что-нибудь, что я могу сделать, чтобы улучшить свои флеш игры, безопасность / анти-хакерство ??

Как взломать хакеров? Использование сторонних программ, таких как Cheat Engine, Tamper data (firefox ext), tamperIE и т. Д. ??

Можете ли вы перечислить все стандартные методы взлома? (зная методы / проблемы взлома, средство решило 50% проблем, по крайней мере, я знаю, где есть проблемы, и заранее сделаю определенные предупреждения)

Ну мой титул имеет49700" потому что в обоих играх рекорд 49700 (на самом деле, многие из этих значений в моей базе данных, как думали разные пользователи), поэтому я считаю, что они используют одни и те же методы

Спасибо

 codingbiz02 июл. 2012 г., 02:51
@cjk: Вы должны быть волшебником взлома: D
 Vishnu28 нояб. 2012 г., 07:14
@cjk: спасибо большое
 flash_antihacker03 нояб. 2009 г., 11:12
да .. секрет - какая-то случайная строка, например: MN! FAH5736ghs ^ &
 Niels Bom03 нояб. 2009 г., 10:33
Вы генерируетесекрет»? Как ты это делаешь и как долго?
 Jacob Poul Richardt04 нояб. 2009 г., 11:43
Не забудьте искать похожие вопросы, прежде чем задавать свои. Проверьте это:stackoverflow.com/questions/73947/... Там есть несколько довольно хороших ответов.
 Vishnu27 нояб. 2012 г., 12:11
@cjk: Эй, расскажи мне, как ты сделал автоматизацию мыши? то есть что вы использовали, это был greasemonkey, javascript или как ??
 cjk27 июл. 2010 г., 10:31
Просто для справки, я написал программу, которая могла бы играть во флеш-игру (Bejeweled Blitz), соблюдая все правила, только намного быстрее, чем человек-игрок, и получать оценки ~ 1M (лучший человеческий счет, который я ')видел 380K). Там'Я мало что мог сделать, чтобы остановить это, так как все, что я делал, - это захват экрана и автоматизация мыши.
 cjk27 нояб. 2012 г., 14:18
@Vishnu - это была программа на C #, использующая Win32 API для мыши.

Ответы на вопрос(9)

Не будет ли простой запуск игры на стороне сервера предотвратить взлом счета? Если игра запускается как случайная игра, вы отправляете случайные значения пользователюбраузер там не будетне имеет смысла пытаться обмануть, даже декомпиляция флеш-файла не будетдать им преимущество.

 Sigtran02 мар. 2011 г., 16:07
@ Кейси: То, что вы предлагаете, используется для онлайн-игр в покер / рулетку, но писать эти короли игр намного сложнее и, следовательно, не позволяет быстро разрабатывать (это также создаст значительную нагрузку на сервер, который подпитывает несколько сотня экземпляров для пользователя) ... но это уже используется.
 Ben Lesh05 нояб. 2009 г., 22:44
Flash через веб-браузер на стороне клиента.
 Casey Chu27 июл. 2010 г., 10:28
@blesh: игралогика будет на стороне сервера, и результат этой логики будет отправлен клиенту для отображения приложением Flash.

Вы'в конечном итоге пытаемся отложить время, которое требуется людям для взлома вашей системы, или сделать так, чтобы оно того не стоило. Вы можете попробовать добавить соль к хешу для дополнительной сложности. Это может быть отправлено в качестве значения во флэш-игру (добавить его в качестве параметра для объекта флэш-памяти в HTML) и включить его в код подтверждения хэша. Вы можете отправить какой-то идентификатор сеанса или случайное число, чтобывсегда разные. Вы даже можете генерировать два хэша разными методами и проверять их оба.

Конечно, неНе стоит полагать, что люди нашли способ взломать реальную функциональность игры. Или что онипросто действительно хорошие игроки ...

Это'На самом деле невозможно обеспечить безопасность вашей оценки, если она полностью выполняется на стороне клиента. Вы должны сделать хотя бы часть этого на стороне сервера, чтобы он был даже удаленно защищен. Я вижу 2 способа сделать это:

вы отправляете периодические обновления счета на сервер, а на стороне сервера вы проверяете, что счет нет прыжок "перебор" (определяется в контексте вашей игры). Если оно "прыгнули» Вы можете смело предположить, что игрок взломал.

Вы отправляете всю последовательность движений игры (вместе со случайными событиями или любыми другими событиями) на сервер с результатом в конце и проверяете, что счет действительно точен. Это, очевидно, не будет работать для каждой игры, но для некоторых игр это может работать. Ты нене могу сказать ничего конкретного о вашей игре, поэтому яоставлю это здесь.

 Blindy26 нояб. 2009 г., 00:13
Так что тыповторяю "для каждого"очко " Получили ли вы сохранить положение и направление вашего персонажа и врага, которого он поражает? Может работать в некоторых играх, конечно.
 Blindy24 нояб. 2009 г., 17:31
но там'Все еще действительно большое количество событий, которые происходят в шутере, особенно в стрелялке, управляемой ключом. Вы должны не только загружать каждое отдельное событие на сервер (или выЯ потеряю преемственность), но держу это в памяти тоже.
 Breton25 нояб. 2009 г., 23:32
Я бы подумал, что вы сохраните только те события, которые влияют на счет, который в схеме вещей нене может быть больше, чем количество событий, которые влияют на счет в пошаговой игре. Я имею в виду, если выПрименяете счет к каждому пикселю, который двигает ваш персонаж, или к каждой нажатой клавише. На самом деле, я бы оценил максимальное число возможных событий увеличения баллов примерно в 467, но в большинстве случаев это так ».будет около 30-40. Конечно, я могу быть отключен в 10 или 100 раз. ~ 0,47 КБ данных не так много, если вымы представили друг другасобытие" с байтом.
 Breton25 нояб. 2009 г., 23:33
извините .. 497 и ~ 0,5 кБ
 Blindy05 нояб. 2009 г., 04:07
Да но этоне применимо ко многим играм, особенно шутерам или тем скачкам, где слишком много всего происходит. Это может работать для таких вещей, как тетрис или логические игры в целом.
 Breton24 нояб. 2009 г., 14:19
Почему бы неРазве это не применимо к шутерам или прыгучим играм? Есть ли что-то, что яЯ не знаю, что делает нецелесообразным или невозможным вести постоянный подсчет событий, которые приводят к увеличению оценки? Держите список врагов, на которых отскочил, убедитесь, что список не превышает фактическое количество присутствующих в игре? В зависимости от индивидуальной игровой механики возможны самые разные вещи. Пространство возможностей платформеров и шутеров более ограничено, чем вы думаете.
 rook05 нояб. 2009 г., 02:09
Первая пуляне позволить хакеру получить высший балл. Твоя вторая пуля - фантастическая идея!

Безусловно, самый простой метод, который сложнее всего победить во Flash, - это использовать CheatEngine, чтобы просто найти ячейку памяти, в которой хранится счет, а затем изменить значение на то, что вы хотите. Все сервера-отправки хэширования / засолки / проверки в мире выиграли 'не исправить это, потому что ваша игра думает, что этоДействителен, прежде чем упаковать его в хорошийдействительный хеш для представления.

Ты можешь сделать 'проверки вменяемости на счетах, если они всегда будут в пределах предопределенных значений, но даже тогда решительный хакер может просто выяснить, каковы максимально допустимые значения и всегда передать это значение.

Вы можете попытаться запутать значения ваших оценок в памяти, чтобы их было труднее найти с помощью CheatEngine, например, сохраняя их как умноженное значение, а затем в своих методах получения и установки для значения счета добавьте умножение / деление значений для получения / установить правильную оценку для ваших просмотров и виджетов представления счета. Даже это всего лишь тактика сваливания.

Если фиктивные оценки не стоят вам денег, либо нене беспокойтесь о том, чтобы тратить время на 0,01% людей, которые обманывают, или просто модерируйте свои таблицы результатов вручную.

Главное, что следует учитывать при предотвращении мошенничества:Насколько это действительно важно? Если ты'Вы проводите какое-то соревнование на основе рекордов с денежным призом, тогдаэто довольно высокий приоритет. Если ты'просто раздражен, что какой-то случайный человек портит вашу таблицу рекордов, этоНе стоит тратить время на то, чтобы их остановить, просто проверяйте это раз в неделю и сбрасывайте плохие результаты.

Как вы сказали, в зависимости от того, что делается для взлома, существуют разные дыры, которые нужно исправить. Поскольку вы отправляете актуальную информацию в своем сообщении, и "секрет» содержится в коде, это становится намного более легкой целью. Некоторые из вещей, которые вы могли бы сделать, чтобы улучшить безопасность

Используйте другую хеш-функцию, у MD5 есть известные недостатки: можно создавать сообщения с одной и той же подписью, не зная содержимого, SHA1, SHA2 обеспечивают более высокий уровень безопасности, это предотвратит атаку из-за слабости MD5.

Сделать 'секрет» уникальный для каждого сообщения, т.е. отправлять его с сервера для каждой публикации, это предотвратит многократное повторное использование одного и того же хэша и усложнит просмотр кода и создание хэша

Хешируйте результат несколько раз, напримерvalue = hash(hash(hash(...,salt),salt),salt) это победилоНе помогает, если люди декомпилируют вашу программу, но это поможет, если они просто пытаются воссоздать хеш самостоятельно.

Ищите программное обеспечение для защиты вашего SWF от декомпиляции, я нене очень много вспышки, поэтому я неу меня нет надежных ссылок для этого

Я думал о том, что с момента появления игрыЧтобы требовать аутентификацию, я предполагаю, что есть вызовы, которые требуют получить имя пользователя и другую информацию.

Обсуждение этого вопроса от другого разработчика было рекомендовано использовать компоненты Ajax. ИДК.

Большинство хакеров найдут способ обойти большинство проблем безопасности, лучший способ - запретить им отправлять на сервер что-либо, кроме того, что требуется для работы игры.

Кто-нибудь использовал случайные числа, основанные на количестве доступной отрицательной памяти? вместо того, чтобы искать конкретную область памяти с этими программами.

Почему бы не отправить несколько поддельных значений в mem и получить результаты на основе открытых областей памяти?

Пожалуйста, не'Я не учусь за это предложение. Я ученик, как и большинство других.

Используемая вами криптографическая система очень похожа наHMAC, но ваша реализация менее безопасна. Алгоритм md5 не работает, однако ваш MAC невосприимчив к атаке с префиксами, чтобы генерировать коллизии хешей, поскольку это начало вашего секрета. Злоумышленник должен иметь возможность контролировать начало строки, чтобы создать хэш-конфликт.

TamperData - очень полезный хакерский инструмент для изменения / захвата / воспроизведения трафика, который поступает из браузера. Поэтому вы должны предотвратить атаки повторного воспроизведения, аутентифицируя текущую дату и время: hmac (secret, date_time.score.username).

Хакеры, вероятно, используютSWF Декомпилятор чтобы найти значение вашего секрета в SWF-файле. Чтобы противостоять этому, вы должны попытаться похоронить секрет, используя обфускацию SWF, такую какhttp://www.amayeta.com/.

Ничего из этого не являетсяСеребряная пуля"это только усложняет хакеру. Хакер всегда сможет изменить свой счет, потому что вы доверяете клиенту, чтобы сообщить вам правильный результат. Даже если вы внесли рекомендуемые изменения, вы все равно будете нарушатьКВО-602.

 Ben Lesh05 нояб. 2009 г., 22:52
+1 Интересный ответ.

Вы можете добавить своего рода RSA (асимметричное) шифрование в свои приложения Flash. Вы бы поместили открытый ключ в ваше приложение Flash и использовали закрытый ключ на стороне сервера для расшифровки отправленного результата.

Это победилоЭто не обязательно помешает хакеру взломать ваше Flash-приложение, но это сделает его немного более болезненным.

Вот библиотека AS3 для шифрования RSA.

Снаружи этозависит от того, какую серверную технологию вы используетеВы используете (PHP, .Net или что-то еще), как вы реализуете RSA на другой стороне.

Следует также отметить, чтона этот вопрос уже был дан ответ.

Если бы я хотел взломать твою игру, я мог бы декомпилировать твою игру и узнать md5 "секрет», Обратите внимание, что я ставлю секрет в кавычки, так как тот факт, что он присутствует в бинарном файле вашей флеш игры, означает, что на самом деле это не секрет.

Вероятно, невозможно сделать ваши оценки непобедимыми, все, что вы можете надеяться сделать, это сделать это сложнее.

 frankster06 нояб. 2009 г., 10:54
Как взломать хакеров? Можете ли вы перечислить все стандартные методы взлома? " Я ответил на некоторые его вопросы. Ваш комментарий жалуется, что я неАскер не помогаетне помочь ему или мне, как ты неt ответить на любой из его вопросов или предоставить дополнительную информацию о моем ответе.
 Ben Lesh05 нояб. 2009 г., 22:50
В конечном итоге это неТ помогите спрашивающему. Вопрос здесь в том, как сделать его более безопасным. Безопасный незначит "совершенно безопасно ", Если ваш дом защищен мертвым болтом, системой безопасности и собакой, это незначит я не могуразбить окно, застрелить собаку и украсть телевизор, прежде чем появятся полицейские. Но я'просто предположим, что грабят соседей, потому что они оставляют дверь открытой. ;)»
 flash_antihacker03 нояб. 2009 г., 11:36
Не могли бы вы сказать мне, как можно усложнить взлом? знак равно

Ваш ответ на вопрос