«удалите denuvo!» авторы deathloop выпустили патч для пк и разозлили игроков

Алан-э-Дейл       15.02.2023 г.

Что такое Denuvo

Denuvo — это решение для управления цифровыми правами (DRM) для разработчиков игр. Они могут лицензировать Denuvo и интегрировать его в свои компьютерные игры. Программное обеспечение Denuvo обеспечивает защиту от пиратства. Он разработан для того, чтобы людям было сложнее «взламывать» игры и распространять их бесплатно. По словам Denuvo, он «останавливает обратный инжиниринг и отладку», необходимые для взлома игры.

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

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

Samsung Galaxy A52s

Время начала продаж: сентябрь 2021-го

Ориентировочная цена Samsung Galaxy A52s: 6 + 128 ГБ — $559

Особенности: дисплей 120 Гц, подэкранный сканер отпечатков, камера 64 Мп с OIS, быстрая зарядка 25 Вт, стереодинамики, защита от воды IP67, NFC

Samsung Galaxy A52s — значительно улучшенный вариант Galaxy A52. Смартфон оснастили 6,5-дюймовым AMOLED-дисплеем с разрешением Full HD+ и частотой обновления 120 Гц. В качестве процессора используется 6-нм Qualcomm Snapdragon 778G с поддержкой 5G. Аппарат доступен в единственной модификации: с 6 ГБ ОЗУ и 128 ГБ ПЗУ. Главная камера представлена модулем на 64 Мп с оптической стабилизацией изображения. Также есть ультраширик, макрообъектив и датчик глубины. Разрешение селфи-модуля составляет 32 Мп. Аккумулятор ёмкостью 4500 мАч поддерживает быструю 25-ваттную зарядку. Корпус устройства защищён от воды и пыли по стандарту IP67. Новинка получила мини-джек и стереодинамики с объёмным звучанием Dolby Atmos.

Деобфускация EAH

Выше я писал о «всяком мусоре». Что же такого в EAH напихали заморские разработчики? В ней реализована поддержка вычислений хеш-функции SHA-160, шифрования AES и телеметрии (у версий старше 2015 года). До кучи в EAH выполняется загрузка из папки . Еще там есть EALS (Electronic Arts LSX). Это не самая удачная вложенная аббревиатура, где LSX означает XML Schema Processor Messages. Штука, которая нужна для сверки XML-корреспонденции.

Ее структура получается примерно такой:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

<LSX>

<Response id=»3″sender=»EbisuSDK»>

<GetProfileResponse AvatarId=»%LOCALAPPDATA%\Origin\AvatarsCache\многоцифрбукв.jpg#26813913″CommerceCountry=»RU»

IsTrialSubscriber=»false»

SubscriberLevel=»0″

Persona=»XAKEP.RU»

IsUnderAge=»false»

CommerceCurrency=»RUB»

Country=»RU»

UserIndex=»0″

IsSubscriber=»false»

GeoCountry=»RU»

PersonaId=»0000001″

UserId=»000002″/>

</Response>

</LSX>

Все данные, которые представляют хоть какой-то практический интерес, всегда помещаются в /dev/null конец структуры EAH.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

typedefstructEA_HANDLE_MAIN_STACK

{
//— WSA, где содержатся все данные о сетевом соединении c OriginCORE—S_EA_WSA_ADDON wsa_stack_45;
//WSA_Startup((__int64)&_RBX->field_0)
// Стек входящих сообщений в сыром виде, которые были обработаны потоком, отвечающим за получение данных

LPVOID filed_63__array_44;

LPVOID filed_68__array_44;

LPVOID filed_73__array_44;

//IDотправленныхсообщенийWSA_Startup

size_t send_MESSAGE_ID_inc_78;

size_t filed_79_array_2626;

size_t PROBE_105;

// ГОТОВЫЕ ДАННЫЕ

charORIGIN_CORE_VER_10616;

size_t origin_core_ver_len_108;

size_t max_origin_core_ver_len_109;

chargame_id16;

size_t game_id_len_112;

size_t max_game_id_len_113;

size_t reserved__114;

size_t reserved__115;

size_t reserved__116;

size_t reserved__117;

size_t reserved__118;

}

EA_HANDLE,*pEA_HANDLE;

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

Denuvo + VMProtect = love

Вот и настало время для обещанной истории про то, как Denuvo защищает Origin SDK.

Сигнатурные «руки Блауковича» принимают свои очертания при работе с константами исходного кода игрушки и Origin SDK. Для примера возьмем кусок кода из распакованного (его хеш MD5: ).

1
2
3
4
5
6

0000000141958B2A488D15EF7ED8FE lea rdx,qword ptr ds<aOriginstartupE>

0000000141958B31B90FA2FFE7mov ecx,E7FFA20F

0000000141958B364C89CBmov rbx,r9

0000000141958B394C89C7mov rdi,r8

0000000141958B3C8D89F15D001B lea ecx,qword ptr dsrcx+1B005DF1

0000000141958B42E8690F0300call<unravel_dump_scy.EA_CALLBACK>

Этот фрагмент, переваренный декомпилятором Hex-Rays в псевдокод, выглядит так:

1 EA_CALLBACK(0x3000000i64,aOriginstartupE);

Рейнгард Блаукович тоже читает «Тибериумный реверсинг»

Что здесь не так? Обычно первый аргумент — регистр . Он складывается из двух констант: . С учетом того, что все операции выполняются над четырехбайтным регистром, окончательный результат, выданный Hex-Rays, равен . Компилятор на стадии оптимизации повторил бы то же самое. Значит, константа была намеренно разбита на две части.

Присмотримся ближе к первому операнду слагаемого: . Почему именно операнд, Холмс? Наверное, под него проще подобрать ассемблерную инструкцию, которую можно скрыть внутри. То есть использовать традиционный прыжок «в середину инструкции» … Для проверки этой догадки заменим опкод на «nop — ничего не делать».

1
2
3

0000000141958B3190nop

0000000141958B320FA2cpuid

0000000141958B34FFE7 jmp rdi

CPUID — статическая компиляция для проверки лицензии Denuvo. Естественно, после ее использования нужен для возврата управления. Это «правая рука», а «левая» — системный вызов, которым Origin SDK выделяет память для EAH:

1
2
3
4
5
6
7
8

// Вот как эти «руки»…

000000014195C350B90F054FC3mov ecx,C34F050F

000000014195C3558D89A9FEB03C lea ecx,qword ptr dsrcx+3CB0FEA9

000000014195C35BE8 A0D80200 call<unravel_dump_scy.malloc_0>

// …трансформируются в «крюки»

000000014195C35090nop

000000014195C3510F05syscall

000000014195C3534FC3 ret

Сигнатурное разделение на два слагаемых для первого аргумента легко выявить в исходном коде (мы же знаем, где все процедуры Origin SDK расположены). Кроме того, нам известно, что вся эта «оранжевая музыка» ломается за пару кликов. Исполнение исходного кода Origin SDK в этом варианте развития событий вовсе не требуется (код будет лежать мертвым грузом). Поэтому ничто не помешает нам перезаписать его хакнутыми инструкциями. Короче, Denuvo свою лицензию проверяет через динамику. Какой смысл вообще в этих статических извращениях?!

Далее идет еще более странное (может, для кого-то даже смешное) поведение австрийских парней. Кусок кода, который отвечает за генерацию открытого ключа для обмена LSX-сообщениями:

1
2
3
4
5
6

charout16;//

sub_14199AB30(&ctx);

randr=GetTickCount();

sub_141999F80(&ctx, &randr, 4i64);

sub_14199A8A0(&ctx, out);

Здесь первая процедура выполняет нехитрые вычисления:

1
2
3
4
5
6
7
8
9
10
11

_int64 __fastcall sub_14199AB30(__int64 a1)

{

__int64 result;// rax

result=0i64;

*(_DWORD *)(a1+8)=0x67452301;

*(_DWORD *)(a1+12)=0xEFCDAB89;

*(_DWORD *)(a1+16)=0x98BADCFE;

*(_DWORD *)(a1+20)=0x10325476;

*(_QWORD *)a1=0i64;

returnresult;

}

«Да ведь это же MD5!» — воскликнет наблюдательный читатель и будет абсолютно прав! То есть в читабельном виде код из Hex-Rays выглядит так:

1
2
3
4

MD5_Init(&ctx);

randr=GetTickCount();

MD5_Update(&ctx, &randr, 4i64);

MD5_Final(&ctx, out);

Позвольте, сударь! Где же в приведенных выше примерах «мощная и непробиваемая защита» Denuvo? А нет ее! При помощи VMProtect 2 накрыты внутренности , причем только переходы между основными операциями процедуры. То есть копирование памяти , раунды — все это открыто!

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

В истории разработки Denuvo еще была техника «воровства» нескольких ASM-инструкций в выделенную память. Это такой ламерский антидамп, известный еще со времен SafeDisk и первых CD-ROM. Этот детский сад быстро убрали, чтобы не позориться в XXI веке.

Отдельной строкой хотел упомянуть хайп, поднимающийся в Сети, когда очередной блогер выясняет, насколько сильно проседает FPS в игре, защищенной Denuvo. М-да! «А мужики-то и не знают» до сих пор о таких очевидно негативных последствиях бездумного использования виртуальной машины.

Защита в разрезе

Начнем с азов. Denuvo – современная система защиты лицензионного софта, в частности игр, от взлома. Тем самым система предотвращает распространение пиратских копий и торрент версий игр. По крайней мере, так было до недавнего времени, пока Denuvo не научились взламывать все кому не лень.


Официально, то, как работает Denuvo покрыто тайной. В том плане, что никакой официальной информации нет, а та, что есть, никем не подтверждается. Но совершенно очевидно, что система использует крипто-шифрование. Т.е. сложный алгоритм шифрования данных. Поэтому их достаточно сложно раскодировать, но не невозможно. В современном мире, криптозащиту используют банки и большие кампании для отправки зашифрованных сообщений и данных по операциям. Обычно такие данные имеют определенную срочность и актуальность, поэтому их, как правило, никто не пытается взломать. Вот кому сегодня может понадобиться информация о технических данных Xbox One X? А ведь файл с такими данными могли взломать только сейчас.

История

Denuvo разработан Denuvo Software Solutions GmbH, компанией-разработчиком программного обеспечения, расположенной в Зальцбурге , Австрия. Компания была образована в результате выкупа менеджментом DigitalWorks, подразделения Sony Digital Audio Disc Corporation , разработавшего технологию SecuROM DRM. Первоначально в нем работало 45 человек. В январе 2018 года компания была приобретена более крупной компанией-разработчиком программного обеспечения Irdeto. Разработка программного обеспечения Denuvo началась в 2014 году. FIFA 15 , выпущенная в сентябре 2014 года, была первой игрой, в которой использовалась Denuvo.

3DM , китайская группа варез , впервые заявила о взломе технологии Denuvo в блоге, опубликованном 1 декабря 2014 года, в котором они объявили, что выпустят взломанные версии защищенных Denuvo игр FIFA 15 , Dragon Age: Inquisition и Lords of the Fallen. . После этого 3DM выпустила версию Dragon Age: Inquisition примерно через две недели после выхода этой игры. Общий процесс взлома занял около месяца, что необычно долго для сцены взлома игр. Отвечая на вопрос об этой разработке, Denuvo Software Solutions признала, что «каждая защищенная игра в конечном итоге взламывается». Тем не менее, технологический веб-сайт Ars Technica отметил, что большинство продаж основных игр происходит в течение 30 дней с момента выпуска, и поэтому издатели могут считать Denuvo успешным, если это означает, что на взлом игры потребовалось значительно больше времени. В январе 2016 года основатель 3DM, Bird Sister, объявил, что они должны отказаться от попыток взломать реализацию Denuvo для Just Cause 3 , и предупредил, что из-за продолжающейся тенденции к реализации не будет «бесплатных игр для Играем в мир »в ближайшее время. Впоследствии 3DM решила не взламывать игры в течение одного года, чтобы проверить, повлияет ли такой шаг на продажи игр.

К октябрю 2017 года взломщики смогли обойти защиту Denuvo в течение нескольких часов после выпуска игры, яркими примерами которых являются South Park: The Fractured but Whole , Средиземье: Shadow of War , Total War: Warhammer 2 и FIFA 18 , и все они были взломаны. о датах их выпуска. В другом примечательном случае, Assassin’s Creed Origins , который обернул Denuvo в инструмент безопасности VMProtect, а также проприетарную DRM Ubisoft, используемую для их программного обеспечения для распространения Uplay , обошел свои функции безопасности итальянским коллективом CPY в феврале 2018 года, через три месяца после выпуска игры. . В декабре 2018 года, Hitman 2 «s защита обходили за три дня до его официального релиза в связи с монопольным доступом предзаказа, проводя сравнение с Final Fantasy XV , который был его защита удалена за четыре дня до освобождения.

К 2019 году несколько продуктов, таких как Devil May Cry 5 , Metro Exodus , Resident Evil 2 , Far Cry New Dawn , Football Manager 2019 и Soul Calibur 6 , были взломаны в течение первой недели после выпуска, а Ace Combat 7 — за тринадцать дней. В случае Rage 2 , который был выпущен в Steam, а также собственной Bethesda Launcher от Bethesda Softworks , версия Steam была защищена Denuvo, тогда как версия Bethesda Launcher — нет, что привело к немедленному взлому игры и удалению Denuvo. из Steam через два дня.

Родственный продукт, Denuvo Anti-Cheat, был анонсирован в марте 2019 года и впервые использовался с Doom Eternal после патча 14 мая 2020 года. Однако менее чем через неделю разработчик Doom id Software объявил, что удалит его из игры после отрицательный ответ игроков.

Взлом защиты Denuvo

Да, эту статью можно было написать и раньше, но в жизни много других важных вещей. Работа в лаборатории, перемещения, моя муза и ее красный Ford Focus II за окном. На его капоте мирно таял свежий снег, когда начинался 2019 год. Мне же в голову начали лезть мысли о корпорации Electronic Arts, магазине Origin, игрушках Unravel и Battlefield 4, реализации EA DRM, Denuvo, VMProtect, и… все завертелось.

Если по Steam в Google можно наяндексить все что угодно — от кастомок до эмуляторов, то в связи с клиентом Origin вспоминается разве что динамическая библиотека , которая вместо оригинала сама сабмитит запросы от клиента. Собственно, 100% пабликовых взломов Origin (3DM, CPY и другие) именно так и работают.

Прямо здесь начинается первый секрет: для взлома Origin вовсе не обязательно копировать систему ответов-запросов «клиент-сервер» (чаще всего это около десяти уникальных ID сообщений)! Потребуется чуть-чуть пореверсить клиент и поближе познакомиться с таким термином, как EA handle (далее — EAH). Но обо всем по порядку.

За рекламирование всякой ерунды, непомерные требования к ресурсам и вытекающую отсюда слоупочность официальный пакет Origin не ругает только ленивый, но мы пойдем дальше и покажем его уязвимую суть. На момент написания статьи вышла версия 10.5.31, а разбирать мы будем клиент 9.10.1.7. Принципиальной разницы между ними нет — EAH и там и там одинаков.

На наше счастье, клиент Origin SDK (который запихивается в саму игрушку) имеет много ошибок — как мелких, так и весьма серьезных. Например, при его работе остаются открытые хендлы объектов, для которых SDK почему-то забывает вызывать функции WinAPI и . На это можно было бы закрыть глаза, но вот на вызов адреса с нулевым указателем можно смело сабмитить багрепорты.

Думаю, виной тому откровенная запутанность EAH: перегруженность критическими секциями и семафорами, а также фирменная рекурсия указателей на данные. В такой суматохе запросто можно забыть освободить выделенный блок памяти. Благо процедура уничтожения EAH срабатывает при выходе из игрушки (читай — вызове функции ), что, по мнению буржуйских разработчиков, автоматом избавляет их от этой проблемы.

Вот теперь минутка лулзов, леди и джентльмены! Сказ о том, как Denuvo Software Solution навешивала anti-tamper уже на саму Origin SDK. Делали они это весьма неумело, так как не курили мануалов и не представляют, что именно требуется защитить от посягательства пиратов. Всю мякотку я вынес в отдельную часть статьи.

К сожалению, в отличие от SecuROM в код Denuvo Блаукович не вставлял анекдотов. Однако если следовать традиции, то здесь была бы уместна история про ковбоя, который на спор обмочил весь бар, но ни разу не попал в бутылку.

Вот что делает защита Origin SDK:

  • выполняет виртуализацию функции в процедуре отправки запроса;
  • использует константы Origin и игрушки для вставки инструкций cpuid/ret;
  • для отдельных указателей ret (return С++) в процедурах SDK выполняет переход в динамику с дальнейшей обфускацией Denuvo.

Зачем все это? Зачем ей все шелка, цветные облака… зачем?! У нас ведь есть EAH и целая функция инициализации Origin SDK, о которой Denuvo почему-то не знает.

Виталий Кличко устроился работать в Electronic Arts

Не отстают от Denuvo Software Solution и наши спортсмены-игроделы. Количество контекстов VMProtect достигло сорока для каноничной второй версии и десяти для третьей. Причем сначала они утрамбовали старую вторую, а сверху повесили третью для защиты целостности второй. Это примерно как если StarForce защищать при помощи SecuROM.

Признаться, в первый раз я несколько прифигел, когда автоматом накрыл все сорок контекстов VMP 2.x за один раз. Однако после проследования станции метро OEP (Original Entry Point), ближе к перегону загрузки kit-файлов игрушки Unravel (Unravel ) тулза собственной сборки начала сигнализировать о перезаписи патченных хендлов старого импорта каким-то сторонним кодом. For great justice — последние версии Denuvo так и защищали, что вывело новую породу гибридных протекторов.

Denuvo_Profiler: именно этими данными формируется Denuvo HWID для вашей машины, плюс расшифровка файла лицензии EA Origin и последующее извлечение секретной таблицы Denuvo

EA DRM, OEP, dump

Первое, с чем придется столкнуться при взломе и отвязке игрушки от Origin, — это EA DRM. Опознать его легко по точке входа, которая катапультирует нас (jmp) в библиотеку или — смотря какой разрядности винда. Вот как это выглядит у меня:

1
2
3
4

.ooa0000000142D46000publicstart

.ooa0000000142D46000start

.ooa0000000142D46000nop

.ooa0000000142D46001jmp csCore_Activation64_100

При наличии купленной игрушки в библиотеке EA DRM снимается не сложнее, чем распаковывается UPX. Вся процедура сводится к тому, что SDK получает AES-ключик для расшифровки контента. Если ключ верный, то дальше SDK сам восстанавливает секции и делает импорт. Дальнейший переход в OEP защищаемой EA игрушки обычно выполняется ближе к концу вызываемой процедуры (в моем примере это по адресу 000007FEF1687412), либо перед этим вызывается функция .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

000007FEF16873E4call qword ptr ds<&GetModuleHandleW>

000007FEF16873EAlea rcx,qword ptr ssrbp+0x10

000007FEF16873EEmov rsi,rax

000007FEF16873F1call<activation64_original.Verify_and_GetModuleHalde>

000007FEF16873F6mov rbx,rax

000007FEF16873F9test rax,rax

000007FEF16873FCje activation64_original.7FEF168741B

000007FEF16873FEnop

000007FEF1687400mov r9,qword ptr dsrbx

000007FEF1687403test r9,r9

000007FEF1687406je activation64_original.7FEF168741B

000007FEF1687408xorr8d,r8d

000007FEF168740Bmov rcx,rsi

000007FEF168740Elea edx,dword ptr dsr8+0x1

000007FEF1687412call r9

000007FEF1687415add rbx,0x8

000007FEF1687419jne activation64_original.7FEF1687400

000007FEF168741Bcall rdi

000007FEF168741Dlea rcx,qword ptr ssrbp+0x6A0

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

Лайфхак прост — сделать подмену библиотеки Activation(64).dll на свою с редиректом вызовов в оригинал. При подхвате управления выводим радостный и ожидаем аттача.

EA Origin SDK: Give me the handle and I’ll crack this!

Общая стратегия взлома Origin SDK (который инклудится в игрушку) имеет два разных сценария в зависимости от того, что ты хочешь получить в итоге. Первый вариант сложный, очень палевный и приватный. Он требуется для сетевых игр и обеспечивает возможность играть на официальных серверах. Через цепочку , нужно получить код авторизации, а затем постучать этим AuthCode на сервер. Короче, это тема для отдельной статьи.

Второй вариант гораздо проще. Он пригоден для прохождения одиночных кампаний на локальном компе и никак тебя не запалит в сети. Его мы и рассмотрим подробнее.

Для начала отыщем в коде игрушки процедуру инициализации Origin SDK. Она получает от Origin.exe (в доках он часто называется OriginCore) данные о версии сервера, пользователе и другую подобную инфу, необходимую для дальнейшего запуска игрушки. Если же во время инициализации произойдет ошибка, то процесс попросту завершится, что не входит в наши планы.

Самое главное — эта подпрограмма создает EAH, а всю присланную инфу OriginSDK сливает в эту структуру. Обнаружить код инициализации Origin SDK можно по следующим признакам:

  • использование функции из библиотеки (рантайма);
  • появление строк , , ;
  • указание характерных констант ошибок Origin SDK, например 0xa0020008 (ORIGIN_ERROR_CORE_NOT_INSTALLED) или 0xa0010000 (ORIGIN_ERROR_SDK_NOT_INITIALIZED);
  • работа с «карточкой» игрушки. Это такая специальная структура, код которой приводится ниже:

1
2
3
4
5
6
7
8

typedefstructstruct_EA_ACCESS_request

{

char*ContentId;// 1031469 (идентификатор контента)

char*Title;// Unravel (название игры)

char*MultiplayerId;// 1031469 (идентификатор пользователя для сетевой игры)

char*Language;// en_US

}

EA_ACCESS_request,*pEA_ACCESS_request;// Идентификационная карточка приложения

К примеру, в последней на момент написания статьи версии Battlefield 4 (1.8.2.48475) вход в процедуру инициализации Origin SDK выглядел так:

1
2
3
4
5
6
7
8

0000000140DDB59Bcall<bf4_dump_scy.sub_140DDD1D0>

0000000140DDB5A0lea rcx,qword ptr ssrsp+0x38

0000000140DDB5A5call<bf4_dump_scy.origin_startup>// А вот и вход!

0000000140DDB5AAmovzx eax,al

0000000140DDB5ADtest eax,eax

0000000140DDB5AFjne bf4_dump_scy.140DDB5B8

0000000140DDB5B1xoral,al

0000000140DDB5B3jmp bf4_dump_scy.140DDB669

В Unravel он выглядел так:

1
2
3
4
5
6
7
8

00000001416EBC2Dlea rcx,qword ptr ssrsp+0x30

00000001416EBC32call<unravel_dump_scy.sub_1417A5B80>

00000001416EBC37call<unravel_dump_scy.origin_startup>// Вход!

00000001416EBC3Ctest al,al

00000001416EBC3Ejne<unravel_dump_scy.loc_1416EBC50>

00000001416EBC40mov eax,0xC346A20F

00000001416EBC45lea eax,dword ptr dsrax+0x3CB95E01

00000001416EBC4Bjmp<unravel_dump_scy.loc_1416EBDA4>

Во всех случаях бенефициантом является EAH, который при вызове этих процедур воплотится в куче (heap) как структура размером 968 байт ().

Материализовавшись, EAH послужит тем Солсберийским шпилем, возле которого будет виться остальной OriginSDK. Нельзя пройти мимо сигнатурного обращения к ней — сначала OriginSDK интересуется: «А не ноль ли там?» Если нет, то только тогда тащит оттуда значение:

1
2
3
4
5
6

0000000140DE30D0xoreax,eax    is_EAH_init

0000000140DE30D2cmp qword ptr ds<EAH>,rax

0000000140DE30D9setne al// setne = Set if Not Equal. Эта инструкция как раз устанавливает байт в указанном операнде в значение 1, если нулевой флаг был очищен

0000000140DE30DCret

0000000140DE3DB0mov rax,qword ptr ds<EAH>get_EAH

0000000140DE3DB7ret

Внимание, фокус! Делаем заглушку на процедуре инициализации EAH (), запускаем и видим, что логи отладчика заспамлены гневными сообщениями: «Origin Error: update fail The Origin SDK was not running». Это как раз происходит из-за того, что теперь EAH равен нулю и перестало выполняться ключевое условие — флаг готовности сетевого соединения в его дочерней структуре не взведен:

1
2
3

0000000141989FD0cmp qword ptr dsrcx+50,FFFFFFFFFFFFFFFF is_connection_established

0000000141989FD5setne al

0000000141989FD8ret

Кажется, у нас проблемы? Вовсе нет! Юмор в том, что это отнюдь не препятствие: после тщетных попыток связаться со своими из OriginCore хакнутая игрушка все равно соглашается запуститься. Занавес и выход на бис!

Да будет взлом

Прежде чем понять, как работает Denuvo, нужно понять, как в принципе происходит взлом игр. Перед запуском основного приложения, игра делает простенькую самопроверку и устанавливает связь с сервисом, к которому она привязана (Steam, Uplay, Origin), откуда ей приходит «добро» на запуск. Пираты как раз и отключают этот механизм проверки, чтобы игра сразу начала запуск. Как правило, данный алгоритм встроен прямо в основной файл запуска игры, в народе называемый «ехе-шник».


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

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

Новый зверь…

Поначалу новый механизм работы сбил с толку ветеранов пиратской индустрии. Отключить механизмы проверки уже не представлялось возможным. Первую половину 2021 года можно назвать самым черным за всю историю компьютерного пиратства. Не было ни взломов, ни кряков к большим ААА проектам. Многие отчаявшиеся флибустьеры шли за лицензией. У кого не было средств просто молча или громко завидовали. Третьи обращались к новым торговцам пиратских версий, которые за символическую плату давали офлайн доступ к лицензионным версиям игр.


Сначала 6 августа появился способ запуска почти всех лицензионных игр. DOOM, Rise of the Tomb Raider, Just Cause 3, INSIDE, Total War: Warhammer, Abzû и Homefront: The Revolution можно было использовать без ограничений. Но то была лишь временная лазейка, позволяющая обходить защиту, которую быстро прикрыли.

Игроки расстроились, издатели снова стали почесывать руки, предвкушая скорые прибыли, когда на сцену вышли новые герои. Уже 8 августа хакерская группу CPY (CONSPIR4CY) выдала полноценно взломанную Rise of the Tomb Raider. После чего удары от них пошли одним за другим. Бум! – Inside, Бум! – Doom, Бум! — Deus Ex: Mankind Divided.


После этого в Denuvo видимо схватились за голову и оперативно поменяли алгоритм работы. Новую версию защиты в новых играх так быстро взломать уже не получалось. Следующих взломов пришлось ждать до начала 2017 года.

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

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

Samsung

Сторонним производителям понадобится больше времени, чтобы прокачать свои гаджеты до свежей версии «зелёного робота». Samsung уже начала бета-тестирование фирменной надстройки One UI 4.0, которая основана на Android 12.

Если судить по прошлогоднему расписанию, обновление появится в декабре 2021 года. Первой его получит линейка Galaxy S21. В январе Android 12 прилетит на флагманы вроде Note 20 и Galaxy S20, а также на смартфоны А-серии. Для более старых устройств апдейты выкатят в первой половине 2022-го. Вот список аппаратов:

  • Galaxy S21 / S21 Plus / S21 Ultra

  • Galaxy S20 / S20 Plus / S20 Ultra / S20 FE

  • Galaxy S10 / S10 Plus / S10 Ultra / S10 Lite / S10e

  • Galaxy Note 20 / S20 Ultra

  • Galaxy Note 10 / Note 10 Plus | Note 10 Lite

  • Galaxy Z Fold3

  • Galaxy Z Flip3

  • Galaxy Z Fold2

  • Galaxy Z Flip

  • Galaxy Fold

  • Galaxy A72 / Galaxy A52s / Galaxy A52 / Galaxy A42 / Galaxy A32 / Galaxy A22 / Galaxy A12 / Galaxy A02s / Galaxy A02

  • Galaxy A71 / Galaxy A51 / Galaxy A41 / Galaxy A31 / Galaxy A21s / Galaxy A21 / Galaxy A11

  • Galaxy A03s

  • Galaxy A Quantum

  • Galaxy M62 / Galaxy M42 / Galaxy M32 / Galaxy M12 / Galaxy M02s / Galaxy M02

  • Galaxy M51 / Galaxy M31s / Galaxy M31 Prime / Galaxy M21s / Galaxy M21 / Galaxy M11 / Galaxy M01s / Galaxy M01

  • Galaxy F62 / Galaxy F52 5G / Galaxy F22 / Galaxy F12 / Galaxy F02s / Galaxy F41

  • Galaxy XCover 5 / Galaxy XCover Pro

OnePlus

Что касается OnePlus, обновление до OxygenOS 12 тоже увидит свет раньше обычного. Теперь эту надстройку объединили с ColorOS от OPPO, что должно помочь Android 12 распространяться на гаджеты OnePlus быстрее. Бета-тестирование OxygenOS 12 стартовало 4 октября, а стабильную сборку линейка OnePlus 9 получит к концу декабря.

Согласно инсайдам, до этого момента в октябре может выйти телефон OnePlus 9RT, который будет поставляться с актуальной операционкой. Официально информация пока не подтверждена. По имеющимся данным, Android 12 получат следующие модели:

  • OnePlus 7 / 7 Pro / 7 Pro 5G

  • OnePlus 7T/ OnePlus 7T Pro / 7T Pro McLaren

  • OnePlus 8 / 8 Pro

  • OnePlus 8T

  • OnePlus 9 / 9 Pro

  • OnePlus 9R

  • OnePlus Nord

  • OnePlus Nord CE

  • OnePlus Nord 2

  • OnePlus Nord N200

ОС Android 12 вышла. Какие устройства получат апдейт?

На прошлой неделе состоялся релиз финальной версии ОС Android 12. Перечисляем, когда и на какие смартфоны придёт обновление.

Google Pixel

Традиционно первыми актуальную версию «зелёного робота» получат фирменные устройства Google. Обычно апдейт прилетал на аппараты Pixel в день выхода операционки. Но в этом году компании требуется больше времени на доработку специальной модификации Android 12 с эксклюзивными фишками для Pixel. Так что пока опубликован лишь исходный код AOSP-сборки системы.

Это позволяет вендорам уже сейчас начать разработку своих оболочек поверх ОС. В то же время, по словам Google, обновление по воздуху разойдётся на телефоны Pixel в ближайшие недели.

Android 12 получат следующие модели:

  • Pixel 3 и 3 XL

  • Pixel 3a и 3a XL

  • Pixel 4 и 4 XL

  • Pixel 4a и 4a 5G

  • Pixel 5

  • Pixel 5a

  • Pixel 6

Samsung

Сторонним производителям понадобится больше времени, чтобы прокачать свои гаджеты до свежей версии «зелёного робота». Samsung уже начала бета-тестирование фирменной надстройки One UI 4.0, которая основана на Android 12.

Если судить по прошлогоднему расписанию, обновление появится в декабре 2021 года. Первой его получит линейка Galaxy S21. В январе Android 12 прилетит на флагманы вроде Note 20 и Galaxy S20, а также на смартфоны А-серии. Для более старых устройств апдейты выкатят в первой половине 2022-го. Вот список аппаратов:

  • Galaxy S21 / S21 Plus / S21 Ultra

  • Galaxy S20 / S20 Plus / S20 Ultra / S20 FE

  • Galaxy S10 / S10 Plus / S10 Ultra / S10 Lite / S10e

  • Galaxy Note 20 / S20 Ultra

  • Galaxy Note 10 / Note 10 Plus | Note 10 Lite

  • Galaxy Z Fold3

  • Galaxy Z Flip3

  • Galaxy Z Fold2

  • Galaxy Z Flip

  • Galaxy Fold

  • Galaxy A72 / Galaxy A52s / Galaxy A52 / Galaxy A42 / Galaxy A32 / Galaxy A22 / Galaxy A12 / Galaxy A02s / Galaxy A02

  • Galaxy A71 / Galaxy A51 / Galaxy A41 / Galaxy A31 / Galaxy A21s / Galaxy A21 / Galaxy A11

  • Galaxy A03s

  • Galaxy A Quantum

  • Galaxy M62 / Galaxy M42 / Galaxy M32 / Galaxy M12 / Galaxy M02s / Galaxy M02

  • Galaxy M51 / Galaxy M31s / Galaxy M31 Prime / Galaxy M21s / Galaxy M21 / Galaxy M11 / Galaxy M01s / Galaxy M01

  • Galaxy F62 / Galaxy F52 5G / Galaxy F22 / Galaxy F12 / Galaxy F02s / Galaxy F41

  • Galaxy XCover 5 / Galaxy XCover Pro

Xiaomi, Redmi, POCO

Сейчас несколько смартфонов китайского техногиганта уже совместимы с Android 12 Beta: это Xiaomi Mi 11, Mi 11 Ultra, Mi 11i, и Mi 11 Pro. Правда, пока речь о чистой Android, в то время как MIUI под 12-ю версию операционки ещё в разработке.

Актуальную MIUI 12.5 на основе Android 11 получило множество устройств, так что стоит рассчитывать на длинный список. Ведь в последнее время смартфоны брендов Xiaomi, POCO и Redmi обновляются всё дольше. Android 12 придёт на следующие гаджеты:

  • Xiaomi Mi 11 / Mi 11 Pro / Mi 11 Ultra / Mi 11i / Mi 11 Lite

  • Xiaomi Mi 11T / Mi 11T Pro

  • Xiaomi Mi Mix 4 / Mi Mix Fold

  • Xiaomi Mi 10 / Mi 10 Pro / Mi 10 Youth / Mi 10i / Mi 10s

  • Xiaomi Mi 10T / Mi 10T Pro / Mi 10T Lite

  • Redmi 10 / Redmi 10 Prime

  • Redmi Note 10 series

  • Redmi Note 9 series

  • Redmi Note 8 2021

  • Redmi K40 series

  • Redmi K30 series

  • Redmi 10X series

  • POCO F3

  • POCO F2 Pro

  • POCO X3 / X3 Pro

  • POCO X2

  • POCO M3 / M3 Pro

  • POCO M2 / M2 Pro

  • POCO C3

realme

Один из брендов холдинга BBK обещает оперативно выпустить обновление до Android 12 для своих устройств. Компания realme запланировала выход оболочки realme UI 3.0 на 13 октября. Сперва апдейт появится на моделях семейства realme GT. Также ожидается, что грядущий смартфон GT Neo 2 будет поставляться с двенадцатой версией ПО из коробки.

OnePlus

Что касается OnePlus, обновление до OxygenOS 12 тоже увидит свет раньше обычного. Теперь эту надстройку объединили с ColorOS от OPPO, что должно помочь Android 12 распространяться на гаджеты OnePlus быстрее. Бета-тестирование OxygenOS 12 стартовало 4 октября, а стабильную сборку линейка OnePlus 9 получит к концу декабря.

Согласно инсайдам, до этого момента в октябре может выйти телефон OnePlus 9RT, который будет поставляться с актуальной операционкой. Официально информация пока не подтверждена. По имеющимся данным, Android 12 получат следующие модели:

  • OnePlus 7 / 7 Pro / 7 Pro 5G

  • OnePlus 7T/ OnePlus 7T Pro / 7T Pro McLaren

  • OnePlus 8 / 8 Pro

  • OnePlus 8T

  • OnePlus 9 / 9 Pro

  • OnePlus 9R

  • OnePlus Nord

  • OnePlus Nord CE

  • OnePlus Nord 2

  • OnePlus Nord N200

Вывод

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

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

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

Гость форума
От: admin

Эта тема закрыта для публикации ответов.