Как стать автором
Обновить

Комментарии 36

У меня ощущение, что «это» должно взламываться влет.
Достаточно подкинуть стиму некоторую шаблонную информацию о системе вместо реальной и просто пиратскую копию поставлять вместе с шаблоном. То есть эмулировать окружение. И я не вижу ни одного способа противостоять этому со стороны стима.
Steam и правда пытается, изо всех сил. Valve выпускают все новые версии CEG, улучшают/оптимизируют защиту, но все тщетно, все равно происходит взлом игр за считанные часы, а иногда за минуты.
Кстати, я думаю, что CEG не стал общедоступным не потому, что Valve хочет на нем заработать, а потому что боится неконтролируемо раздавать SDK, т.к. полагают что это упростит взлом защищенных игр.
Это скоро может измениться, Just Cause 3 как первый звоночек.
на персональный компьютер клиента загружается «голый», еще не подписанный исполняемый файл.

У меня одного после прочтения этой строчки сложилось мнение о CEG как о каком-то убожестве, наносящем вред исключительно легальным пользователям?
Не одного. После прочтения строчек «сначала скачивается неподписанный бинарник» я сразу заподозрил лажу.
На счет защиты в стиме, давно интересует вопрос, почему встраивают фактически неработающую защиту вместо такой схемы:
1) В исполняемый файл на стороне сервера перед загрузкой встраиваем id клиента. Причем для каждой игры можно встраивать уникальный id и в уникальное место, чтобы было труднее вычислить, где его искать. Это не очень дорогая операция и сервера её потянут.
2) Через некоторое время взломанную игру выкладывают в виде торрентов.
3) Правообладатель качает игру и выясняет кто же её слил.
4) Аккаунт слившего со всеми играми блокируется.
На мой взгляд, со временем это сделает невозможным выкладку игр в самых популярных для этого местах, а в непопулярных по определению будет совсем немного народа. Плюс ко всему, если сравнивать с тем же гугл-плей, где можно купить левый аккаунт, чтобы на нем потом отработать потраченное, здесь с заработком сложнее и мотивации соответственно меньше.
В общем, не то чтобы мне хотелось, чтобы такая схема начала работать, но мне очень интересно почему она уже не работает. Наверное о ней уже подумали и почему-то отказались?
— diff покажет куда смотреть.
— будут воровать у обычных игроков exeшники и выкладывать их. страдать буду игроки.
— совершенно не защищает от подхода: зарегал аккаунт, купил на него игру, выложил, аккаунт забанили, повторил с первого пункта

Это все работает на сложных программных комплексах, которые стоят больших денег и продаются по контракту. С играми не прокатит.
— хорошо он показывает для IDA и ей подобных продуктов =)
— это решаемо;
— достаточно сделать фейс-контроль при регистрации аккаунта с привязкой к персональным данным.
Ну да, и регистрацию по паспорту.
и сказать досвидания клиентам. Которые радостно сбегут в origin, uplay, и теперь еще Epic Games Laumcher.
Вы еще предложите продавать игры с хардварным ключом, чтобы уж наверняка. Это я так намекаю, что защита не будет успешной, если она делается в ущерб удобству пользователю. Стим стал крут, потому что был дружелюбен к пользователям. Даже дружелюбнее чем торренты. Пара неверных движений и стима не будет, а торренты останутся.
В Южной Корее и Китае как-то же играют люди во всякие подделки nexon, предоставляя свой физический id. А читеров бы как поубавилось :)
— Вообще конечно да, имея два купленных экземпляра можно найти примитивно встроенный id. Но уже это отсекает некоторое количество тех, кто не хочет всё покупать в двух экземплярах. Но как мне кажется, есть способы встраивания id такие, что дифы будут показывать всегда на часть функционального кода, без которого собственно программа работать не будет.
— Как раз от подхода с новым аккаунтом по идее может защищать, т.к. речь идет о постоянной потере денег и на эту потерю должна быть мотивация. Кроме того можно вести какой-нибудь черный список кредиток, а их уже сложнее менять.
— А вот с воровством чужих бинарников действительно сложнее. Опять же, ломать кого-то только ради игры кажется странным. Хотя всякое бывает и не хотелось бы в один момент обнаружить, что тебя заблокировали ни за что.
1) То что внедряется в автоматическом режиме, также в автоматическом режиме и убирается.
2) Стим кроме кредиток имеет еще несколько способов оплаты. Не говоря уж о том, что завести новую кредитку стоит 300 рублей.

Вы так рассуждаете, как будто взлом игр и выкладывание их на торренты — это альтруизм. Это бизнес. И выгода от выложенный популярной игры(тем более эксклюзива) в разы перекрывает стоимость нескольких копий игры для анализа и заказ новой кредитки.
Вот если это бизнес, то мой способ точно не работает, т.к. потери ощутимы только для частного лица. Но в чем он может заключатся? Я вижу только внедрение каких-нибудь зловредов на клиентские компьютеры. Однако раздачи с популярными таблетками в таком не замечены. Поэтому мне не совсем понятно, что это может быть.
Банальное раскручивание трэкера, например. С продажей рекламы.
Есть виртуальные кредитки, они вообще 30 рублей в месяц стоят
Дело в том, что если даже удалить исполняемый файл с одной системы, посредством проверки кэша, сгенерируется новый исполняемый файл, который будет разительно отличаться, чуть менее, чем полностью. В следующей статье я покажу на примере простенькой игры, как в принципе можно обойти эту магию.
В подразумеваемом мной способе файлы у одного клиента получаются идентичными.
Я Вас понял, но с CEG такое не прокатит. Подобную вещь пробовал сделать около года назад, но увы — бинарники будут разными (при чем если сгенерировать несколько раз, очевидные различия будут в совершенно иных местах), даже если они сгенерированы с одного ПК и с того же аккаунта.
С CEG понятно, что не прокатит. Я тут просто отошел от темы поста и начал рассуждать о том, как можно было бы организовать альтернативную защиту.
А про CEG, конечно же пишите ещё. Оно хоть пока и не решает свою задачу, но я до этого вообще не знал, что в valve подобная «защита» есть.
Есть конечно, еще с 2009 года, и одной из первых «ласточек», стала как раз игра, детище самой Valve — Left 4 Dead 2. Хотя тот, древний CEG, был ну очень примитивным. Сделав пару патчей в client.dll, можно было полностью отвязать его от сей защиты.
Можно поподробнее про саму технологию? Что в какой момент чем подписывается? Каким ключом? Ключом стима или разработчика игры? Короче, про саму систему ничего не понял — опишите протокол взаимодействия.
Спасибо за замечание, немного дополнил в подзаголовке "Немного определений". Вообще более детально о том, как работает сама защита на примере игры, я хотел написать в следующей статье, т.к. данная статья была, по сути, лишь абстрактным введением.
Отдал сразу 3 голоса!
Что-то я не очень понял, в чем именно заключается «защита»? Если закачивается голый бинарник, что мешает его не подписывать? Для чего вообще эта подпись нужна, кем она проверяться-то будет? Судя по окончанию статьи, стим позволяет играть без подключения к инету (что означает, что даже если подпись и проверяется, то как минимум, это не обязательно делается на сервере).
Не подписанный файл работать не будет, так как в нем не будет жизненно важных участков кода, которые и содержатся в этой самой цифровой подписи.
Что за бред. Подпись максимум будет данными, но никак не инструкциями (т.к. подпись фактически случайный набор байт и она не может быть преобразована в неслучайный набор инструкций). А если при добавлении подписи дописываются какие-то инструкции, то значит, бинарник не качается полностью.
На примере Dirt Rally: в неподписанный EXE надо еще добавить 2-3 участка кода, который будет отличаться в зависимости от используемого процессора на компьютере, с которого вы хотите играть.
А, нет, ошибся. Не подписанный отличается от обычного на несколько килобайт. То есть мало того что в нем не хватает некоторого кода, так еще и некоторые его уастки зависят от процессора и EXE просто не будет работать на другом компьютере.
Вы поехали на дачу к друзьям и прихватили с собой полный бэкап любимой игры с этим самым CEG, сбросив его на переносной носитель и надеясь, что сможете спокойно поиграть. Но тут случилось непредвиденное — у друга не работает Интернет! Зато на ноутбуке установлен Steam. Не беда, Вы делаете восстановление бэкапа вышей игры в оффлайновом режиме Steam, нажимаете кнопку «Играть», но ничего не происходит! А все потому, что железо и прочие составляющие, о которых писалось выше, не совпадают с железом Вашего друга. И без доступа в глобальную сеть, у Вас просто никак не получится запустить игру, так как по понятным причинам сгенерировать новый исполняемый файл невозможно.

Как это связано с CEG? Информация о железе хранилась (до недавнего времени) в ClientRegistry.blob, при запуске стима в оффлайне она проверяется на соответствие текущей. Запустить игру в оффлайне на другом компьютере и так не получится.
Вникните в статью, ведь я написал, что информация о железе в данном случае будет храниться в исполняемом файле и только. ClientRegistry.blob к этому не имеет никакого отношения.
Да, я в курсе, и поэтому и спрашиваю вас. Ладно, видимо придется переформулировать это в более простой форме.

У стима и стимовских игр была привязка к железу еще задолго до появления CEG. Что представляет собой CEG: замена оригинальному способу привязки или дополнение к уже существующему, усложняющее реверсинг бинарника? Как вообще цифровая подпись может защитить бинарник от реверсинга?

Более того быстрый гуглеж показал, что CEG делает привязку к аккаунту, а не к железу. К тому же, в других источниках утверждается, что CEG при запуске игры каждый раз докачивает части бинарника из интернета. Кому верить? Что у вас, что в других источниках, никакой информации о CEG нет, а та что есть — очень противоречива.
Я видел своими глазами, что из себя представляет из себя Steam CEG SDK, по сему, я имею представление о том, как это работает. Вообще, я решил сделать эту статью для базового понимания, что же такое CEG, так как в интернете, вы вряд ли найдете много информации по этой теме. Естественно, если описывать процесс еще более детальным образом, на это уйдет намного больше времени и статей. И насчет привязки к аккаунту, это чушь, привязка идет к железу, папкам и файлам.
Как цифровая подпись мешает запускать исполняемый файл?
ИМХО проблема, описанная в статье (с бекапом и рестором) явно надумана. При наличии Steam Family Sharing вообще не вижу смысла тягать игры на флэшке. Да и на даче отдыхают, а не у компа просиживают.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.