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

Строго говоря утечка памяти использует память, которая "больше не используется" программой.

"Больше не используемый" имеет больше чем одно значение, это могло значить "нет более ссылочный для него", то есть, полностью неисправимый, или это могло означать, ссылаемый, восстанавливаемый, неиспользованный, но программа сохраняет ссылки так или иначе. Только позже относится к.Net за совершенно управляемые объекты . Однако не все классы прекрасны, и в какой-то момент базовая неуправляемая реализация могла пропустить ресурсы постоянно для того процесса.

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

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

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

10
задан AstroCB 30 August 2014 в 20:49
поделиться

9 ответов

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

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

2
ответ дан 3 December 2019 в 22:00
поделиться

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

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

1
ответ дан 3 December 2019 в 22:00
поделиться

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

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

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

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

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

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

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

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

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

5
ответ дан 3 December 2019 в 22:00
поделиться

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

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

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

Ничто из этого не является «серебряной пулей», это просто усложняет задачу хакеру. Хакер всегда сможет изменить свою оценку, потому что вы доверяете клиенту сообщить вам правильную оценку. Даже если вы внесете рекомендованные изменения, вы все равно будете нарушать CWE-602 .

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

Ничто из этого не является «серебряной пулей», это просто усложняет задачу хакеру. Хакер всегда сможет изменить свою оценку, потому что вы доверяете клиенту сказать вам правильный результат. Даже если вы внесете рекомендованные изменения, вы все равно будете нарушать CWE-602 .

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

Ничто из этого не является «серебряной пулей», это просто усложняет задачу хакеру. Хакер всегда сможет изменить свою оценку, потому что вы доверяете клиенту сказать вам правильный результат. Даже если вы внесете рекомендованные изменения, вы все равно будете нарушать CWE-602 .

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

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

1
ответ дан 3 December 2019 в 22:00
поделиться

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

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

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

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

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

-1
ответ дан 3 December 2019 в 22:00
поделиться

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

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

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

8
ответ дан 3 December 2019 в 22:00
поделиться

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

0
ответ дан 3 December 2019 в 22:00
поделиться

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

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

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

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

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

0
ответ дан 3 December 2019 в 22:00
поделиться

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

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

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

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

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

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

0
ответ дан 3 December 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: