Просмотр полной версии : Онлайн-игры и защита от лома
Этот вопрос имеет отношение больше к девелопингу в целом, нежели непосредственно к флэш-дизайну/программингу.
Идея такова. Делается достаточно простая азартная аркадная флэш-игра. Однопользовательская. При наборе определенного количества очков информация об этом отправляется на сервер. Азартность заключается в соревновательном принципе, учитываются рейтинги игроков и распределяются места (хотя те же принципы разработки потом могут быть применены и к любой многопользовательской игре). Требуется исключить любые возможности для мошенничества. Позже планируется победителям выдавать ценные призы, и следовательно, это вопрос не только политический, но и коммерческий.
Хотелось бы услышать предложения, КАК это можно сделать?? (Будем считать, что мы не заморачиваемся на технические аспекты, без разницы, как это будет реализовано - если это имеет значение, я намерен использовать пхп, если потребуется, то пхп-турбин).
Мы изначально исходим из того, что любой флэш-файл можно декомпилировать, и вся логика приложения (а в случае аркадной игры она находится на стороне клиента, иначе все было бы гораздо проще) доступна потенциальному злоумышленнику. Чтобы ему жизнь медом не казалась, я намереваюсь использовать экшнскрипт-кодеры ("обфускаторы"), но это ни в коем случае не стоит рассматривать как основу безопасности. Вы понимаете, к чему я клоню.. злоумышленником делается читерская swfка, которая, минуя игровой процесс, отсылает на сервер некоторое "выигранное" количество очков.
Пара общих принципов ясна. Идентефикаторы сессий, действительные лишь некоторое время - их можно вытащить, ручками или автоматизированно, декомпилируя скрипт, и потом подсунуть серверу. Генерируемые сервером .as или .swf файлы - хотелось бы потом проверить, соответствовал ли тот .as/.swf файл, который отвечал за игровой процесс тому файлу, который отсылал серверу инфу о результатах игры.. проверка контрольной суммы файла на соответствие идентификатору сессии - как это грамотно можно сделать, я еще не придумал, и пока идей никаких.
Из общих принципов пока что реализации с достойным уровнем безопасности не получается. Никаких вспомогательных материалов по данной теме я найти не смог. Трудно идти первым в таком щекотливом вопросе. Просьба помочь хорошей идеей или советом.
KidsKilla
25.10.2005, 05:48
подозреваю, что ток сессии+реферрер...
реферрер подделать можно проще простого
2nuran
Научи, а?
2Exie
Насчет обусфикаторов - да, после них в AS ты уже не отконвертишь, но можно увидеть p-code (низкоуровневые команды, исполняемые плеером), я в последнее время обдумываю идею того, что если написать p-code - кодер и изучить p-codе, то это откроет новый уровень возможностей писанины/декомпиляции, т.к. ты будешь кодить/декомпилить на уровень ниже всяких защит. Пока я подобной инфы не встречал (хотя Декомпилер показывает p-code). Есть также вариант усложнить взломщику жизнь: сделать шифрованную флешку-контейнер, которая будет грузить (опять же, шифрованную) флешку-клиент. Также, хорошим вариантом является импорт готовой флешки в Shockwave, к нему я декомпилеров не встречал, однако, если ты выберешь этот путь, то ты должен понимать, что только у 50% юзверей есть Shockwave - плеер. Итог: зачем мне холодильник, если я не курю ;)
2Ion:
В направлении п-кода я еще не ковырял. Похоже, придется. Спасибо.
Самый ламерский способ (да, я им регулярно пользуюсь %)) - прописать в Регет поле реферер и затребовать урл с необходимым гет- или пост-запросом %)) Для Файрфокса есть приличный плугин по управлению деятельностью браузера.
Кстати, по поводу директора я тоже подумывал, но надеялся, что дело не зайдет так далеко. Разберусь в перспективе поподробней.
..да, то что надо. Вариант не из приятных (в лучшем случае половина юзеров согласится загрузить шоквейв-плугин, если его еще нет), но с технической точки зрения то, что надо. Посмотрел, шоквейв до сих пор никто не научился декомпилить. Еще нужно добавить мудреный алгоритм шифрования важных игровых переменных, которые хранятся в памяти.
Да, реферер подделать очень легко - например, можно просто самому написать скрипт, который через сокет соединяется с сервером и отправляет ему нужный реферер.
А 100% защиты быть не может! Ведь теоретически можно узнать, как работает любая флешка(автор топика это упоминал), значит, можно модифицировать ее алгоритм под свои нужды.
Согласен, даже самую лютую, старфоровскую защиту от дизасма можно выломать, что уж говорить про Флеш. А насчет шифрования переменных памяти - х3, я думал всегда, что смотреть память флеша и понимать, что там хранится довольно тяжело. Насчет Дира: если половина согласится качать плеер, то это не так плохо: у 50-и% есть, ещё 25% скачают, итого 75%
А вообще следует смотреть, стоит ли игра свеч? В большинстве случаев можно обойтись и не слишком сложной защитой, чтобы любой, вооружившись декомпилером, не мог сломать ее. Если для кого-то затраты, потраченные на взлом, будут казаться меньше возможных результатов, то он все-равно тебя сломает%)
Интересным вариантом является написание алгоритма типа md5 или sha1 - сервер посылает юзеру строку при каждом обмене инфой, клиент должен возвратить зашифрованную этим алгоритмом строку вместе с данными.
Ну и в чем заключается такая защита?
"Интересным вариантом является написание алгоритма типа md5 или sha1 - сервер посылает юзеру строку при каждом обмене инфой, клиент должен возвратить зашифрованную этим алгоритмом строку вместе с данными."
ты имеешь в виду такую схему ,когда сервер передает флеше уникальный "ключ", по которому кодится информация?
ION в своем стиле - "сломать все, что ломается" 80)
Если хошь действительно хорошую защиту, похоже, выход один - шифрование...
Помню, пару лет назад нам в универе препод с гордостью на лице рассказывал про md5 и sha1 и еще много про че. Я не гуру в этом, но свое с лекций унес. Ведь многие банковские софтинки и прочие системы на этих алгоритмах построены...
На взлом ключа на 128 (ну знаете, у механиков ключи на 15, а у ITшников ключи на 128... представляю, лет так через 10 - сынок, подай-ка мне ключ 64 на 128?) уйдет вся жисть 80)
Кстати, интересный вопрос. Очень актуальный... Очень интересно было бы взглянуть на решение!
kost@, в случае с играми не обязательно взламывать шифр и ключ - в нашем случае же не требуется получить точный результат. достаточно простым перебором закидать сервер случайными комбинациями, и смотреть, пока результат не удовлетворит - допустим ,если мы передаем зашифорванные набранные очки, то достаточно будет засабмитить подбором любое достаточно большо число.
реферрер подделать можно проще простого
spoof ? )
А вообще следует смотреть, стоит ли игра свеч?
Именно так. Вряд ли ценный приз (если он будет) будет больше 100 баксов. Если не будут ломать "из принципа", то шансы у системы достаточно высоки %))
Сделаю расширенную систему определения попыток "побаловаться" с сервером, потому что сначала юзеру придется "прощупывать" сервер, отправляя вслепую кривую инфу, а там мы его сцапаем и сделаем внушение.. кулхацкера это остановит.
Интересным вариантом является написание алгоритма типа md5 или sha1 - сервер посылает юзеру строку при каждом обмене инфой
В том и проблема, что обмен инфой с сервером идет:
1) при начале игры
2) в конце игры, когда на сервер отсылается результат.
Вся логика приложения идет на стороне клиента в экшнскрипте, а, следовательно, ее можно подменить как частично, так и полностью.
Это необходимые условия для "аркадной" игры, иначе она превратится в "пошаговую", а там уже можно расположить всю логику на стороне сервера, и это будет панацеей.
Именно так. Вряд ли ценный приз (если он будет) будет больше 100 баксов. Если не будут ломать "из принципа", то шансы у системы достаточно высоки %))ну вот, я зря шевелил мозгами...
Вся логика приложения идет на стороне клиента в экшнскрипте, а, следовательно, ее можно подменить как частично, так и полностью.
Почему именно в клиенте а не на сервере? У всех платных игр логика как раз на сервере и находиться.
Почему именно в клиенте а не на сервере? У всех платных игр логика как раз на сервере и находиться.
Потому что:
Это необходимые условия для "аркадной" игры, иначе она превратится в "пошаговую
Иначе бы у меня не возникло и темы для обсуждения.
Под "аркадной" понимается: арканоид, тетрис, прицельная стрельба по Бин Ладену из пистолета Макарова и т.п.
а что если с помощью coldFusion логику во флешку загружать?
Ануткыть, поподробнее об этом
а что если с помощью coldFusion логику во флешку загружать?
Это и есть серверная логика.. не подходит. Тот же server-side actionscript.
Мы не можем каждый раз отправлять сообщение об ударе теннисной ракеткой по мячику на сервер, чтобы сервер просчитывал, куда этот мячик летит, что сделал с этим мячиком оппонент и вернул данные по тому, как сейчас движется мячик сейчас.
Тогда можно так: передаешь конечные данные после просчета и начальные данные, чтобы сервер их проверял
Тогда можно так: передаешь конечные данные после просчета и начальные данные, чтобы сервер их проверял
Начальные данные у нас - "начало игры, такой-то уровень сложности". Конечные - количество очков.
Ну и соответственно если это тетрис (к примеру), то ещё передаешь всю историю игры: в каком порядке летели фигуры, что игрок нажимал и когда; а сервер рассчитывает, сколько игрок должен был набрать очков за такую игру и сравнивает с реальными очками
я тоже имел ввиду такой вариант, когда обдумывал на досуге алгоритм "защиты", можно будет аргументировано доказать дисквалификацию
Я так в играх и делаю. И чем сложнее механника действие пользователя, тем сложнее будет разобраться + шифрую результат по md5 умноженный на некоторое число известное серверу (хотя от декомпилинга это не помогает).
Каждый имеет право не использовать.
SamTakoy
01.11.2005, 13:50
Я так в играх и делаю. И чем сложнее механника действие пользователя, тем сложнее будет разобраться + шифрую результат по md5 умноженный на некоторое число известное серверу (хотя от декомпилинга это не помогает).
Придется для каждой игры писать механику дважды: один раз на флеше, второй раз на PHP. И в таком случае не получится универсальной системы для сохранения очков, если у нас на сайте много игр и для всех нужно сохранять очки.
Смотря, что считать универсальностью.
Была сделала серия игр, везде было md5, но использовалось разное правило (на сервере, завести для новой игры это займет минут 5)
Механики для php не писалась. Просто рядом с результатом в базу писался лог действий. Потом лог всех победителей пропускался через механнику той же игры (просто вместо действий пользователя использовались данные лога) и смотрелась реальность ситуации. Времени опять же занималось мало.
Да еще, зная максимальные параметры которые можно достичь в том или ином участке, можно также отсекать попытки при которых эти значение привышены.
Ну и соответственно если это тетрис (к примеру), то ещё передаешь всю историю игры: в каком порядке летели фигуры, что игрок нажимал и когда; а сервер рассчитывает, сколько игрок должен был набрать очков за такую игру и сравнивает с реальными очками
Юзер генерит последовательность из длинных палок и складывает их горизонтально %)) Это к примеру.
Впрочем, все равно спасибо. Это наиболее приличное решение. В сочетании с другими методами защиты даст неплохой результат.
Потом лог всех победителей пропускался через механнику той же игры (просто вместо действий пользователя использовались данные лога) и смотрелась реальность ситуации. Времени опять же занималось мало.
Благодарю. Этого вполне достаточно. Засунуть во флэшового робота лог и глазками посмотреть, насколько игровой процесс соответствовал реальности - задача вполне посильная, если победителей не сто на дню. А если их будет по сто на дню, то и модерирующий состав можно нанять %))
Есть ли способы разобрать что в файле после обсфускачивания прогой SWFEncrypt ?
Если в п-коде рубишь, то, наверное, да
Запускаем игру N раз ( не более 10, для начала).
Смотрим, что и когда летит к серверу.
В случае тетриса - кольцуем "лог игрового процесса" :)
А что касается шифрования... Алгоритм - двухсторонний, иначе не восстановишь лог для анализа.
В общем, отдавать на клиент "все" и получать "в конце результат" - имхо, здоровенная такая дыра.
У меня проблема та же, аркадная игра в реальном времени, и нужно защитить данные.
Я решил идти по следующему пути, что скаченная Flash-ка c сервера была бы бесполезна.
Сделал так (если кто укажет на недостаток механизма, буду только признателен)
На HTML странице, там где загружается Flash. Flash-ке передается от сервера некий ID (ключ).
<PARAM NAME=FlashVars VALUE=”id=asd398djs783jd8213nd” >
Который сервер генерирует, следующим образом (php)
$id = md5(Session_id() . time());
(md5 тут уже лишний, но это просто для разнообразия).
Тут же сервер в базу заносит пометку, с этим кличем.
Как только Flash-ка загрузилась, она соединяется с сервером по средствам XMLSocket-ов (в качестве сервера скрипт на Perl) и отсылает ID. Сервер принимает ключ, смотрит есть ли он в базе, если есть, то удаляет эту запись и оставляет connect. Если нету, то делает disconnect клиенту.
Был бы очень признателен, если бы прокомментировали ;)
Хотя, как уже было сказано, можно взломать все что угодною Уверен есть брешь и тут :(
aQuestion
26.01.2006, 18:11
Как только Flash-ка загрузилась, она соединяется с сервером по средствам XMLSocket-ов (в качестве сервера скрипт на Perl) и отсылает ID. Сервер принимает ключ, смотрит есть ли он в базе, если есть, то удаляет эту запись и оставляет connect. Если нету, то делает disconnect клиенту.заменяем в этом тексте "Flash-ка" на "подделанная Flash-ка". что меняется?
aQuestion
26.01.2006, 18:17
возьмите, например, мой славный дум3. я ж могу обычным винраром посмотреть его карты и найти коды от всех дверей. могу и в консоли "ноклип" набрать, на худой конец. но почему-то этого не делаю.
имхо, не стоит делать анализ лога игры для победителей, достаточно сделать публичный "реплэй оф зе виннэр гэйм", и пусть все видят, какой хакер крутой. на худой конец, если реплэй получится у него реалистичным и красивым, то приз он по-своему заслужил; почему бы и не воздать за его нечеловеческие старания.
Ну и, а ключа то она не знает. Принцип.
HTML > Flash > В первом же фрейме Flash конектится и отдает ключ.
Ну сделали мы поддельную flash-ку. Но как мы узнаем какой ключ щас в базе на сервере ждет коннекта.
Допустим мы зашли через сайт открыли нормальную Flash-ку. Скопировали ее клич, и записали в поддельную, но нормальная Flash-ка уже соединилась и ключ уже больше не действителен. :confused:
Ладно, проехали, способы все равно есть, в любом случае :(
HTML > Flash > В первом же фрейме Flash конектится и отдает ключ.
Сниффается траффик, в момент отдачи ключа еще сервером и устанавливается соединение с сервером от имени запущенной флэшки. Запущенная флэшка заливается потоком требований на открытие соединения, чтобы наверняка не пролезла к серверу.
JudgeFog
27.01.2006, 12:42
>>Запущенная флэшка заливается потоком требований
нафига?
простой робот, запущенный на том же php на локальной машине,
и страницу с сервака возьмет, и html пропарсит в поисках ключа.
я делал так: внутри флэхи есть некий длинный пароль (потом работает SWFencrypt), серверу отдаем цифру набранных в игре очков и md5 от строки пароль+очки, на сервере сравниваем хэши. Всё.
aQuestion
27.01.2006, 16:00
Допустим мы зашли через сайт открыли нормальную Flash-ку. Скопировали ее клич, и записали в поддельную, но нормальная Flash-ка уже соединилась и ключ уже больше не действителен. :confused:Допустим мы качнули её регетом или ещё как :confused:
aQuestion
27.01.2006, 16:02
блин, да дайте уже хакеру приз, чтоб отстал.
Ну и, а ключа то она не знает. Принцип.
HTML > Flash > В первом же фрейме Flash конектится и отдает ключ.
Ну сделали мы поддельную flash-ку. Но как мы узнаем какой ключ щас в базе на сервере ждет коннекта.
Допустим мы зашли через сайт открыли нормальную Flash-ку. Скопировали ее клич, и записали в поддельную, но нормальная Flash-ка уже соединилась и ключ уже больше не действителен. :confused:
вырубаем флэш-плагин, грузим сайт, получаем ключик, причём он же остаёца в базе на сервере,так как ничего туда не коннектица. Клепаем поддельную флэшку...
Homo Sapiens
30.01.2006, 21:11
Несколько комментариев ко всему вышесказанному:
1. md5 морально устарела. Это ненадёжный алгоритм и не стоит им пользоваться
2. sha1 постепенно утрачивает надёжность, благо сообщения о нахождении коллизий уже поступали. Соответственно, стараемся переходить на sha2.
3. Как я понял цель - убедиться, что критические данные поступают из надёжного источника, то есть из не вломанной игры. Проблема в том, что не стоит переносить обработку критических данных на клиент. Может быть стоит открыть сокет соединение и передавать на сервер инфу обо всех действиях и назад забирать результат расчётов. В итоге flash код не будет иметь никакой секретной информации (то есть не будет расчитывать результаты, а заниматься только визуальной частью), поэтому проблема его взлома не будет стоять так остро.
aQuestion
31.01.2006, 11:39
по первым двум пунктам, ерунда-с. ну, пара китайских учёных нашла несколько коллизий на специально подобранных для этого данных. дальше что? кому удалось найти коллизию для мд5 в общем случае хотя бы в эн (где эн больше 1) раз быстрее, чем перебором? или что, если завтра очередной китайский гений таки додумается до этого, он сразу бросится ломать твою флешку ради ста уёв? или же он из наивно-альтруистических побуждений выложит свой сорц на http://breakMD5here.com/ ? люди переводят массу кода на шаХ по тем же причинам, что не едят курятину - паника совершенно беспочвенна.
Homo Sapiens
01.02.2006, 05:32
Не считаю себя экспертом в криптографии, соответственно ссылаюсь на авторитетные источники, например Брюса Шнайера. Находим в них его отношение к md5 и к sha1. Вполне возможно, что он ошибается, но я бы прислушался к его мнению.
А он пишет, сколько нужно времени на взлом md5 ?
То есть если допустить, что каждому 5(10)-ти символьному паролю соответствует 33-х символьный "крэк", и оба они дают на выходе md5 одинаковые значения, что быстрее найти ?
aQuestion
01.02.2006, 18:59
ссылаюсь на авторитетные источники, например Брюса Шнайера
http://img360.**************/img360/4122/19cf.gif
Набранное вами сообщение слишком короткое. Увеличьте ваше сообщение до 5 символов.
12345
Homo Sapiens
01.02.2006, 20:12
Замечательно, практическая криптография Брюса Шнайера.
1. Смотрим на год издания.
2. Смотрим блог Шнайера (http://www.schneier.com/blog/archives/2005/06/more_md5_collis.html).
3. Смотрим ссылки, например "MD5 is dead (http://mspong.com/2005/06/10/md5-is-dead/)".
4. Делаем выводы сопоставляя даты.
5 (опционально). Изучаем сайт и понимаем, что пользоваться стоит свежей информацией.
aQuestion
15.02.2006, 16:07
а ничего, что они сгенерили *ОБА* документа? если один из документов вне их контроля, угрозы по прежнему нет.
вот как (http://www.antsight.com/zsl/rainbowcrack/) обстоят дела в этом случае. только люди, обладающие ботнетами, могут в принципе претендовать на взлом мд5.
это... а почему бы не использовать проектор(projector)?
Товарищ, вы вообще о чем? Проектор защитит так же, как и в случае с обычной .swf
ясно... :) извините... ;) просто я подумал что там все запутаннее чем в свф... ну всмысле плеер плюс свф... может их как нить покаверкать ? так что бы невозможно было бы декомпилить... ладно бредовая идея... :) еще раз извините
aQuestion
16.02.2006, 11:58
я по поводу мд5, я был не прав таки (http://www.stachliu.com/collisions.html)...
так и в итоге-то, к чему пришли? я тут решаю подобную задачу.. мыслей 0.
Интересным вариантом является написание алгоритма типа md5 или sha1 - сервер посылает юзеру строку при каждом обмене инфой, клиент должен возвратить зашифрованную этим алгоритмом строку вместе с данными.
И при плохом коннекте все это вылетит.
Хотя это не проблема, такое и так часто случается. Я думаю необходим способ восстановления разорванного соединения (не по инициативе сервера или клиента).
Сорри за пост, но не могу пройти мимо.. :)
1) Надежный путь СУЩЕСТВУЕТ, и имя ему - RSA. Можно много изобретать велосипедов, но в конце-концов придете именно к этому (Если, конечно, придете, а не застрянете раньше, все-таки не у всех научная степень по математике..)
2) В конкретной задаче (флеш-игра и отправка очков на сервер) вполне можно обойтись элементарным, ни капельки не криптографически стойким алгоритмом (так что обсуждения про MD5 здесь не к месту), а именно брать Score, умножать его на какое-то простое число A и прибавлять другое число B (B может не быть простым, но должно быть меньше A). И итоговую сумму отправлять на сервер, а на сервере уже размещать всю логику по защите от взлома, причем логика эта сведется к двум элементарным проверкам:
Что присланное число при делении на A дает в остатке B
Что приславший его не был замечен в читерстве до этого.
Второй пункт, правда, не совсем элементарный, тут можно на самом деле много всего проверять и учитывать (IP, User-Agent, сессию, логин и т.д.) но в любом случае это делается НА СЕРВЕРЕ, а значит злоумышленник не имеет доступа к коду и не знает, что там происходит. И даже досконально разобравшись в клиентском алгоритме, будет долго ломать голову, почему же все-таки оно не работает.. (потому что копать будет не там).
Насчет использования вместо y=Ax+B других функций (md5, sha1 и так далее) - ДО ЖОПЫ. Все равно код находится на стороне клиента (со всеми паролями и исходными значениями), все равно его можно повторить в "своей" флешке, все равно это НИКОГДА не будет криптографически стойко, поэтому разницы от использования той или иной функции на практике нет.
Чтобы усложнить хакеру жизнь, можно числа A и B не хранить непосредственно в коде, а "вычислять" долгим и запутанным алгоритмом (еще и размазанным по всему мувику, а не содержащемуся в одном месте). Причем можно сначала писать этот алгоритм от фонаря, а потом просто взять число, которое он вернет - а хакеру придется весь алгоритм разгребать (ну, или выдрать декомпайлером, так что повторюсь, лучше не хранить весь код в одном фрейме)... Но еще раз говорю, это лишь усложнит ему задачу, но НЕ СДЕЛАЕТ ЕЕ НЕВЫПОЛНИМОЙ.
Если нужен надежный путь - смотрите начало поста. Правда, RSA придется реализовывать самостоятельно (я на AS еще готовой реализации не видел, но есть куча на яваскрипте - переделать займет полчаса) и работать он будет ооочень медленно, учитывая как вообще все на флеше работает. Но насколько я знаю это единственное решение данной задачи (задача-то частая, на самом деле), которое изобрело человечество.
Upd:
Кстати, вот еще подумал, что асимметричный ключ вообще-то реализован в https:// - так что может быть можно отсылать данные с помощью GetURL, а не LoadVariables() - и тогда стандартная PHP-шная реализация сессий в общем и будет гарантом аутентичности данных..
а есть у кого желание поломать то что я сделал?
в начале года я что-то мухлевал.. создавал.. потом запустил, и все.. по статистике не видно что бы кто-то взломал игра отработала то что надо.. и счас можно в нее поиграть... но уже не актуальна.. до следующего года..
имхо лучшая защита от лома - хранить и обрабатывать инфу на стороне сервера. От клиента отсылать инфу: куда нажали, что нажали, скока раз нажали и получать информацию о том, что можно нажать, где нажать, скока раз нажать (образно говоря)
А такое предложение, как сервер посылает случайным образом (т.е. может не послать - 80%) некий пакет, ответ на который является проверкой на читерство.
пакет приходит под видом правильного игрового, но содержит неверную информацию с точки зрения игры, игра перехватывает ошибку и нечто вытворяет с полученным пакетом под видом генерации ошибки и отправки на сервер с отладочной целью (вроде как улучшить работу сервера) а отправить модифицированную принятую строку.
эту проверку учесть при отправке результата.
сервер сравнивает результаты (он уже знает про проверку)
читеров сразу банить с вытекающими последствиями.
Моя мысль такова: раз хакер не знает что пришлет сервер в этом пакете (т.к. существует вероятность, что хакер ни разу не получил его) а сам пакет шифруется по случайному алгоритму (может я не так сказал - несколько разных алгоритмов, выбирается один и сохраняется на серваке в базе данных) сломать будет трудно.
как предложение?
pdvision
17.10.2006, 14:30
Тоже столкнулся с такой проблемой и кажется нашел выход.
Нужно перестроить алгоритм занесения результатов в базу (без передачи напрямую результатов скрипту). Например после окончания игры флэш создает текстовый файл с каким нибудь уникальным именем, куда записывает результаты игры и переменную с именем созданного файла передает PHP скрипту который парсит его и дабавляет уже из файла результат в базу. Потом это файл стирает с сервака.
Соответственно чтобы создать этот файл нужно иметь права на запись и физически находится в нужном каталоге на серваке.
Пока не вижу способа заломать этот алгоритм. Если конечто не учитывать возможность взлома сервака и записи в нашу папку чужой флэшки :) Это уже маразм будет.
Все другие варианты в которых результат просчитывается в самой флэшке (неважно каким способом) взломать можно, это зависит только от уровня хакера. Ведь весь код после декомпеляции будет у него перед глазами. Соответственно взлом только дело времени.
Dendroid
17.10.2006, 17:42
Например после окончания игры флэш создает текстовый файл с каким нибудь уникальным именем, куда записывает результаты игры и переменную с именем созданного файла передает PHP скрипту который парсит его и дабавляет уже из файла результат в базу.
Соответственно чтобы создать этот файл нужно иметь права на запись и физически находится в нужном каталоге на серваке.
Теперь осталось придумать, как запускать флэшку, когда она находится физически в нужном каталоге на серваке, а не в кэше браузера на диске пользователя. ;)
pdvision
17.10.2006, 18:02
Теперь осталось придумать, как запускать флэшку, когда она находится физически в нужном каталоге на серваке, а не в кэше браузера на диске пользователя. ;)
А флэш вобше может работать с файлами? Непосредственно создавать их? :bye:
Dendroid
17.10.2006, 18:31
Разве что локальные шареные объекты, только в одной папке, и только на клиенте :)
pdvision
17.10.2006, 19:00
Разве что локальные шареные объекты, только в одной папке, и только на клиенте :)
Полный крах моей теории :away:
Dendroid
17.10.2006, 19:07
:) http://flasher.ru/forum/showpost.php?p=578985&postcount=6 описание способа защиты для такого типа игрушек, как вам надо. Но требует внесения довольно значительных изменений в саму игру...
FourSide
17.10.2006, 19:33
...и только если это Windows Projector (exe).
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.