Сейчас на форуме: testrev1337, johnniewalker, Kybyx, bedop66938, vsv1 (+7 невидимых) |
eXeL@B —› Крэки, обсуждения —› FADE DRM, обнаружение и механизм работы |
Посл.ответ | Сообщение |
|
Создано: 14 октября 2009 01:25 · Поправил: ogurets_agressive · Личное сообщение · #1 Привет всем! Очень удивлен был тем, что про FADE нет ни статей об анализе, ни рабочих детекторов, учитывая то, что, судя по зарубежным изданиям, в данное время эта защита - всё еще конкретная заноза в заднице. Вначале хочу поделиться некоторыми наблюдениями, основанными на анализе ArmA и ArmA2 (securom + fade): 1. Детекция Оба образца имеют узнаваемую сигнатуру: Code:
В IDA определяется как перекрестная ссылка на WinMain (она в обоих образцах всего одна). 2. Триггеры Рядом с сигнатурой сидит FADE_flag1 (mov [xxx], 1), который ставится в 1 каждый раз когда срабатывает FADE-триггер. Использование флага через перекрестные ссылки не ловится, видимо адрес рассчитывается процедурно или вся область памяти с этим флагом участвует в расчетах. Но это неважно, раз уж мы можем отловить все установочные триггеры через xref'ы. Тем более что в патченной версии (самих игр у меня нет, есть только пара fixed exe из инета) некоторые из найденных мной триггеров уже пропатчены (хоть и не все). Видел также другую разновидность триггера, но и она завязана на четырех флагах, которые находятся недалеко от FADE_flag1 и вся эта красота удобно и стабильно наследуется от версии к версии, а установочные функции-триггеры также находятся по сигнатуре (и к тому же идут подряд, друг за дружкой). Насколько я понимаю, защита эта несложная. Даже если я что-то упустил, и её снятие гораздо сложнее, начало уже обнадеживает. Более того - за годы между выходами двух частей ArmA она почти не изменилась и вполне возможно написать если не универсальный кряк, то по крайней мере детектор. Интересно другое (для меня лично, тема не об этом) - почему за столько времени ею никто не занялся всерьез? Напишите плз кто что знает по теме и нужна ли народу статья с анализом этой защиты? Я мог бы написать, когда (и если) разберусь в ней полностью. Любая помощь - только приветствуется. Oops. Забыл про благодарности - группе Hatred за securom-дамп 1-й Армы и особенно Itachi за его апдейт к кряку от Hatred, который указал мне места, где прячутся триггеры FADE. Заслуги за их работу я себе присваивать не собирался. Updated: Обнаруженные мной проверки (триггирующие основной флаг): 1. Self integrity. Какой-то собственный несложный хеш по собственному коду в памяти плюс CRC32 по WinMain. Находится по push offset WinMain@16. 2. CDKEY Blacklist Check В winmain первые 4 байта CD-Key xor-ятся с некоторым DWORD (для каждой игры видимо свой) и проверяются по списку на равенство нескольким другим константам. Если не равно ни одной из них - проверка пройдена. WinMain защищен профайлером или каким-то другим контролем целостности (видимо чтобы не ковыряли блеклист, остроумно!). Трассировка отладчиком приведет к падению на динамических call-таблицах. 3. CDKEY Hash Check №1 CDKEY (первые 4 байта) хешируется базовым Windows Crypt API, алгоритм SHA. Если первый байт хеша равен некоторому hardcoded-числу, проверка пройдена. В этой проверке также вычисляется язык лицензии (он заложен в CD-Key). Здесь уже начинаются динамические таблицы указателей на функции. Без отладчика всё еще можно, но уже некомфортно. 4. CDKey Hash Check №2 Дублирует проверку №1 для FADE, но вместо определения языка делает itoa первых 4 байт CD-KEY в десятичном представлении. В отладчике я в неё ни разу не попадал, поэтому отложу её пока. Больше манипуляций с CD-KEY видно не было, что наводит на интересные мысли - можно написать Fast-SHA для генерации хеша только по DWORD, подобрать все валидные для игры начальные номера из всего лишь 4 млрд. вариантов, учесть блеклист, выбрать язык и прилепить остальные 11 байт от фонаря. Вуаля! У нас валидный CD-KEY и всё заработает без exe-patching'а (плюс игра в онлайне ;) ). Буду проверять эту догадку. |
|
Создано: 14 октября 2009 01:39 · Личное сообщение · #2 |
|
Создано: 14 октября 2009 01:53 · Поправил: ogurets_agressive · Личное сообщение · #3 daFix пишет: Подкинь хоть какую нибудь игру с этой защитой, а то ни разу не слышал и не встречал Я ж написал - ArmA и ArmA 2 Интересная кстати защита - отслеживает изменения своих файлов и вводит искусственные глюки в игру, например такие: hxxp://img13.imageshack.us/img13/6797/kabanator.jpg (скрин не мой) P.S. Обычно она идет в паре с SecuROM или SafeDisc. |
|
Создано: 14 октября 2009 02:00 · Личное сообщение · #4 |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 14 октября 2009 02:04 · Поправил: MasterSoft · Личное сообщение · #5 |
|
Создано: 14 октября 2009 02:17 · Поправил: ogurets_agressive · Личное сообщение · #6 huckfuck пишет: кое-какая инфа о защите: Да да. Это я и имел в виду под "зарубежными изданиями" Есть еще статья на gamecopyworld и в английской википедии. Вот это особенно интересно: "Detection of this protection is unknown at this stage, if anyone has a known method of detecting this protection please let us know here". MasterSoft пишет: А с чего ты взял, что эт FADE? Ну в смысле как? Во 2-й Арме с nocd-кряком от Reloaded невозможно даже прицельно и в упор из пистолета в бочку попасть. В лицензии всё норм. Народ говорит еще о других глюках - например превращении в птицу (летающую) или курицу, отключение AI (солдаты в сингле просто стоят столбом). Кабанчик вот например - тоже из 2-й Армы. Представляю как прикольно работать в их группе разработки багов Вообще мне не очень нравится подход по отлову отдельных триггеров. Их можно плодить сотнями, насовать во все дырки, но основных условий включения будет мало. Например, на один флаг может быть куча триггеров - time-bombs, script-bombs, активируемые по нажатию клавиши или чтению особого ресурса. Пока выделил CD-KEY-флаг. Видимо он тащится из первых версий, простенькая проверка. Знаю что есть еще как минимум exe-integrity и анти-отладочный флаги (ставится если работает отладчик, читается память процесса и еще фиг знает при каких условиях). Может еще быть проверка меток диска (scratches). |
|
Создано: 14 октября 2009 11:07 · Личное сообщение · #7 Нужно искать свинью по сигнатуре... Свинская сигнатура должна присутствовать В смысле например объект этого кабана в ресурсах присутствует, но в нормальной версии врядле вообще используется. На примере этого скриншота понятно, что из ресурсов на сцену должен был джип подгрузиться, а подгрузилась и используется свинья. Может по запросам к ресурсу выловить флажок? Где то же принимается решение, что загружать кабана вместо джипа, ну или номер ресурса джипа подменяется на номер ресурса кабана.... |
|
Создано: 14 октября 2009 15:43 · Личное сообщение · #8 |
|
Создано: 14 октября 2009 19:36 · Личное сообщение · #9 ToBad пишет: Нужно искать свинью по сигнатуре... В том-то и проблема что таких "приколов" может быть сколько угодно, все не выловишь. Обрисую вкратце механизм FADE, как я его вижу сейчас: 1. Есть несколько проверок - CD-KEY, целостность exe + возможно других файлов, отсутствие отладчика, blacklisted apps и на топологию диска (поскольку этим занимается SecuROM, это маловероятно, но упускать из виду все равно не стоит). Эти проверки в случае провала включают несколько флагов. Проверок может быть несколько и в разное время, но их обнаружение довольно простое, потому что сопряжено со специфичными действиями (открытием .exe-файла например). Проверки - слабое место. В пользу этой идеи говорит то что они защищены jumpgate'ами и анти-отладочным кодом (слава яйцам хоть полиморфного пока не видно). 2. При включенном флаге в случайное время активируются логические бомбы (триггеры). Они могут срабатывать сразу (косоглазие например), а некоторые - по таймеру или какому-то игровому событию (в определенной миссии, при выполнении скрипта или игрового действия). Нейтрализация одного триггера не мешает работе остальных, они разнотипны, трудно поддаются обнаружению, зато легко локализуются и патчатся, что в общем-то, особо не обнадеживает. По xref-ам на флаги не отыскиваются. Как я написал выше, даже простейший CD-KEY-флаг спрятан и простым дизассемблированием нельзя понять, где он проверяется и какие триггеры запускает. daFix пишет: А в GTA4 не эта-же защита присутствует? Может быть. Защита особо не афишируется, на коробочке мелким шрифтом должно быть написано. |
eXeL@B —› Крэки, обсуждения —› FADE DRM, обнаружение и механизм работы |