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

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

Крутая статья, читается буквально на одном дыхании, чего вряд ли скажешь о реверсе :)

И сразу вопрос «почему?»:
если в буфере EAX оказываются значения типа: EDB88320, 11, 5, 3f и т.д., то сразу будет понятно, что функция, которая использует это значение — будет константной
Так как эти значения будут одинаковыми на любой версии CEG. Так сказать, «общеизвестные» значения. Забыл еще значение 60.
Ждал большего. Интересны именно принципы работы CEG(лично мне), а не непосредственно реверс.
Но все равно интересное начало. Поддержал плюсиками, надеюсь на более глубокое продолжение темы.
Статья для меня осталась непонятной.

1. Что конкретно это за функции «Constant», «Random», «Protect»? От чего зависит «константное» значение?

2. Что проверяется в «файловых» проверках?

3. Что за микро-проверка с файлом *.STEAMSTART? Игра запускалась в любом случае, зачем она тогда и зачем её патчить?
1. О функциях написано в статье. Значения, ни от чего не зависит, они являются константными, то бишь неизменными для всех версий CEG (так же упоминалось в статье). Возможно, при анализе более сложного CEG (в обозримом будущем), я сделаю упор на полное разжевывание этих функций;
2. О файловых проверках (а так же проверке реестра), писалось в предыдущей статье, ссылка на нее присутствует в начале статьи;
3. Так же писалось в статье, данный файл создается, если Steam не запущен, то есть фактически HANDLE процесса Steam равен нулю.
1. Тогда зачем патчить константную функцию, если значение ни от чего не зависит?
Как я понял, на компьютере А она будет возвращать EDB88320h. Перенесли игру на компьютер В — там она тоже возвращает EDB88320h?
3. Вы перефразировали предложение из своей статьи, и, к сожалению, это ничем не помогло.
этот файл события создается, когда процесс Steam не запущен и по сути является последней микро-проверкой
Я спрашивал не откуда берётся этот файл, а зачем эта проверка, если она фактически ни на что не влияет? Игра же запустилась до патчинга CreateFileA?

Выходит, из трёх проверок фактически работала только одна (первая — константа, с третьей — игра запускалась). Причём, что именно проверяла вторая проверка, осталось непонятным.
1. Если не патчить, то игра не запустится, так как каждая из функций будет вести к исключению. Если пропатчить не все функции, исход будет тот же.
3. К сожалению, обо всем очень подробно и разжевано написать не удалось в размере всего двух статей. Если я буду писать дальше статьи на эту тематику, я обязательно поведаю больше информации.
И насчет той проверки .STEAMSTART — это лишь полировка напильником, она ни на что не влияет, только на скорость старта игры.
Тогда буду ждать новых статей. Спасибо :)
А будет ли работать вариант, если просто получить исходный бинарник до того, как его подпишут? Возможно это было бы проще?
Если только напрямую от разработчиков получить незащищенную версию бинарника. Вероятность равна нулю, в общем.
Я сейчас прочитал ответ на этот вопрос в комментариях к предыдущей статье. Но он появился параллельно с моим вопросом здесь. В общем, как выяснилось, бинарник приходит с сервера порезанным и не может в таком виде запуститься. И этот крайне важный момент был изначально не понятен.
Вот на хабре добрались и до Steam…
Тема на самом деле довольно глубокая, если копнуть хорошенько:
github.com/atom0s/Steamless

А на счет эмуляторов steam_api, то их сейчас вагон и маленькая тележка, каждая группа имеет такой, как следствие релизы игрушек из steam довольно быстро появлялись, до момента появления Denuvo, как уже выяснили aka VMProtect, поэтому достать готовый эмулятор не сложно, но думаю интереснее было бы сделать свой, используя Open Steamworks:
github.com/SteamRE/open-steamworks
Пусть это и будет велосипед, но ребята, которые на этом съели собаку не особо будут готовы делиться своими исходниками, да и для простеньких игр достаточно описать основные функции, но зато будет свое, родное.

Надеюсь на появление и таких статей.
Согласен, возможно напишу статью, посвященную созданию простейшего эмулятора Steam (вопрос только, нужно ли это).
Возможно, для начала стоит все же более основательно раскрыт затронутые темы. То, что вы написали, это, простите, не статьи. Вот все их содержание:
  1. Есть такая штука, как CEG (хм… а по русски получается СУП :)), она вроде как что-то там защищает каким-то хитрым образом
  2. (магические пассы руками) смотрите… смотрите… смотрите… Вот, мы сломали защиту, правда, защита вроде как говеная да и не защита вовсе (во всяком случае, у меня сложилось впечатление, что вы открыли бинарник, сделали пару поисков подстрок, рядышком там что-то пропатчили и все заработало. В чем тогда ценность такой «защиты» абсолютно неясно, и зачем о ней статьи нужны, если она так легко ломается)

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

Если статья об эмуляторе поможет раскрыть эти вопросы, то тогда будем ждать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации