RU

Сомнительность целесообразности "защиты игр паролем"

KOLANICH #24 03.02.2014 18:03 12 comments 22428 views

ИМХО багофича “пароль на игру” в формате не нужна, так как
1 она не защищает исходник от просмотра, так как если бы защищала, играть без пароля стало бы невозможно (как интерпретатор может интерпретировать то, на что у него нет пароля?).
Можно, конечно, сделать компиляцию в байт-код вместе с адовой обфускацией, а исходник приложить в зашифрованном виде, но благодаря наличию огромных количеств текста это не поможет, а к тому же увеличит размер файла.
Да, паролем можно отпугнуть несколько людей, не ладящих с логикой, но кто захочет, тот без труда его восстановит. Достаточно просмотреть исходники куспа.
2 она доставляют неудобства как автору, так и читателям, хотящим заглянуть в исходник.

Предлагаю выпилить эту багофичу из следующей версии формата, дабы не создавать у некоторых авторов ложное ощущение безопасности и не доставлять неудобства читателям, а вместо неё запилить возможность оставить сообщение читающим код до отображения кода.
В случае присутствия этого сообщения QGenу следует вывести его до отображения кода во всплывающем окне с 2мя кнопками “Смотреть исходник (и, возможно, потерять часть удовольствия от игры)” и “Я передумал!”.

Edited at 03.02.2014 18:10 (12 years ago)

О. А какая интересная тема. С вашего позволения выскажу свое мнение по данному вопросу, мне есть что сказать.
Значит так. Само собой, что сильно желающие всегда найдут способ обойти защиту - лицензионные игры с несколькими ключами, степенями защиты и специализированными драйверами ломают как семечки через черный бит или еще чем.

Но тут вступает в силу концепция “Кому оно надо?”. Даже получив доступ к исходнику - читабельность и ясность получаемого кода вовсе не гарантируется. Большинство программистов уже давно сходится во мнении, что лучше писать самому с нуля… Или около того. И понимать как оно работает, что с этим делать, куда пихать апдейты - нежели выяснять как же все устроено в чужом проекте под чистую все копируя и ощущая себя бездарным вором.

Когда несколько программистов работают в команде - даже между ними постоянно происходит коллизия и непонятки, ибо стиль написания кода, подход к решению задач - у всех разные.
И выходит, что сорцы игр\приложений на легко декомпилируемых Я.П., где мы свободнейше получаем исходный код уже из готового приложения(Ну прям как в оригинале, разве что без комментариев) никому не нужны.

С этой стороны, мне кажется что Вы правы, пароль действительно не нужен. Даже если кто-то обучаясь, изучает чужие исходники - в этом ничего страшного нет. И даже если кто-то пилит “клон” Вашей игры… - оригинал всегда ценится больше!
Когда делаешь клон, ремейк или еще что - тебе придется делать не просто так же, а еще лучше, чтобы получить хоть какое-то признание… А если ты еще учишься(А лазая по чужому коду - ты учишься), то шансы на такой подвиг невелики. Так что оригинал на фоне клонов будет смотреться только лучше, контрастируя. Демонстрировать интерес к игре. Демонстрировать способность идейно вдохновлять, захватывать, чувствовать. Эдакий идол. Ровняются, значит.

С другой стороны, “Не чини, пока работает!”. Если кому-то все-таки хочется оградить свой код от посторонних любопытных глаз и единственное что остается ему предложить это пароль… То почему бы и нет? Любознательному кулхацкеру все равно придется приложить смекалку и постараться, чтобы получить код. А шанс, что человек с такими не куриными мозгами кинется ломать чужую игру, а не пилить собственную - минимальны. Так что же? Пароль все таки действует? Пожалуй, все-таки - да. Пароль действует. Свою роль он играет.
Так что пусть. Пусть. “Чем бы дитя не тешилось”. У всех своя голова на плечах. Ощущение безопасности должно быть. Пусть даже ложное или не полное. Сути это не меняет - автору игры, пароль на его игре - толком и не мешает, если дарит радость от самоличного обладания своей интеллектуальной собственностью… “Мвах-ха-ха! Я такой маленький царь! ”
Не надо ничего вырезать тогда.

P.S.: Извиняюсь очень, но не вызвано ли желание вырезать функцию пароля из движка тем фактом, что Вы не смогли получить доступа к какой-то игре, кою хотели изучить? Просто любопытно… А то “Меня терзают смутные сомнения” (с)

Сириус,

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

Точно нет. Защита простецкая, ломается на раз - помню, была даже инструкция, как взломать QSP-игру через виндовый Блокнот.

Кстати, мы говорили на эту тему с Байтом, и решили, что способы взлома пароля на сайте QSP публиковать запрещено.

Пароль, я считаю, не нужен. От любопытных глаз он не защитит, а по сути, только мешает. Ведь кто им пользуется? Новички, которые делают первую игру. “О, прикольно! Тут пароль можно поставить! Конечно, поставлю!” В результате, новичок выкладывает игру с багами, а другие авторы, которые не знают как взломать либо не хотят возиться, не помогут ему исправить баги. Чтобы залезть в код, им нужно узнавать пароль у автора или взламывать игру.

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

Помимо самого кода игры, автору нужно по-хорошему защитить и игровые ресурсы - чтобы, например, игрок не мог посмотреть все картинки, просто открыв папку игры. И здесь пароль тоже бесполезен - он “защищает” только игровой код.

Вместе с тем, как уже говорилось, наличие этого пароля предусмотрено форматом игры. Какие-то авторы всё равно захотят им воспользоваться, даже зная, что он не особо защищает.

Поэтому. На следующую версию QGen у меня такой план:

Сделать галочку в настройках “задавать пароль для игры”, по умолчанию выключенную.
Чтобы для новых игр, по умолчанию, не предлагалось задать пароль. Иначе это получается навязывание пароля, делает его в восприятии автора “необходимым”.

Оке, мотаю на ус насчет специфики защиты. Еще раз извиняюсь.
Похоже у любителей QSP те же проблемы что например и у html5 под Construct2. Впрочем, тут мне сдается что для QSP это не проблема, тут это фича: сколько игр, столько и примеров для новичков ;)

Nex:

Сделать галочку в настройках “задавать пароль для игры”, по умолчанию выключенную

Тоже решение. И возможность воткнуть таки пароль есть, и в размышления о его бессмысленности не бросает.
На самом деле - это все нюансы. Пароли и подобные решения работать на движке не мешают - не проблема. А вот когда случается изредка громкое воспроизведение звуков(Обычный .wav), хотя в настройках громкость минимальная… Или мигает изображение при выводе через view - это уже, пожалуй, косяки :\

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

А если ты еще учишься(А лазая по чужому коду - ты учишься), то шансы на такой подвиг невелики.

код которых не представляет вообще никакого интереса для кого-либо, в то время как почти все игры с любопытным кодом пароля не имеют.

Код любой игры, которую трудно пройти, представляет интерес. Например, убрать рандом в нужном месте или посмотреть заумный пароль.

если он по умолчанию не является таковым

Обычно он таковым и является. ИМХО язык QSP плохо приспособлен для написания читаемого кода.

Aleks Versus Moderator 04.02.2014 08:47 (12 years ago)

Сириус:

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

Думаю, это желание вызвано привязкой расширения qsp-файла к QGen. По-крайней мере у меня так. Я запускаю игры не через плеер напрямую, а через куген. Поскольку на игре стоит пароль, мне приходится закрывать куген, открывать плеер, открывать игру.

Stag_Beetle:

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

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

Думаю, это желание вызвано привязкой расширения qsp-файла к QGen.

Нет, всё гораздо прозаичнее. Мне просто надоело ломать запароленные игры. Авторы думают, что эта защита что-то даёт, и считают своим долгом поставить пароль.

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

Сам язык не располагает к написанию качественного кода. Так что ничего стыдного.

Сделать галочку в настройках “задавать пароль для игры”, по умолчанию выключенную

Туда бы ещё сообщение о том, что этот пароль фиктивен и легко обходится.
Кстати, можно хранить не сам пароль, а солёный хеш от него. Вдруг кто-нибудь неразумный засунет туда свой настоящий пароль от фейсбука а потом будет жаловаться, что его “взломали”.

Синтаксис конечно не из лучших, но, знаете что, из того что пока видел на QSP - вполне терпимо. До знаменитого Brainfuck’а далеко. Плохому танцору и ноги мешают.
Впрочем, если уж свободно помечтать - вместо бейсикоподобности в QSP более бы интеллектуальные “;” и “" из семейства Си позаимствовать… А то с этими “&” и “end” не очень, конечно, эстетично. Правда, это тоже создало бы ряд геморойных проблем, вроде типичной ошибки программиста(Забыл “;” поставить).
Тем более что чем меньше в языке правил, тем легче порог вхождения при обучении. Кажется многие разработчики И.Л. больше писатели, нежели программисты. Им хочется сесть и творить. На Qgen это можно. Уж к этому язык точно располагает.
С паролем или без ;)

Туда бы ещё сообщение о том, что этот пароль фиктивен и легко обходится.

В такой формулировке точно нет, но ссылочку на описание и недостатки этой возможности стоит сделать.

KOLANICH:

Сам язык не располагает к написанию качественного кода. Так что ничего стыдного.

Любопытно, что вы подразумеваете под качественным кодом.

Aleks Versus Moderator 04.02.2014 11:43 (12 years ago)

KOLANICH:

Так что ничего стыдного.

В рамках QSP несмотря на простоту языка, прекрасно видно уровень автора. Не раз на форуме попадались сообщения: “Я не пользуюсь этим-то и этим, потому что не понимаю” и “извините, я нуб, и не могу сделать…”, потом смотришь, и человек уже приводит кусок кода, в котором используется и это и то и он делает то, что раньше не мог. Для новичка естественно “прятать” код из стыда за неполноту своих знаний и умений. Стыд - естественное чувство человека не лишённого самокритики. Так что пароли нужны, как ни крути, чтобы новичок имел хотя бы иллюзию защиты, и не испытывал неловкости. По-крайней мере, негласно новичок сообщает вам, что он бы не хотел, чтобы его код видели, и надеется на вашу тактичность, даже если вы залезаете туда.

Давайте не отвлекаться от темы. Личные пристрастия KOLANICH к синтаксису не имеют отношения к паролям.

Log in or Register to post comments.