Denuvo Anti-Tamper
|
|
MasterMist
|
Дата: Суббота, 21.05.16, 21:36 | Сообщение # 1 |
|
Прежде чем писать в теме, ознакомьтесь пожалуйста с правилами
|
|
| |
kornelijus
|
Дата: Среда, 01.11.17, 18:56 | Сообщение # 9101 |
|
Цитата Reynor (  ) У всех есть что утаивать , да, но они производит продукт для общества и если были социально ответственные, а не рукавадились только неолиберальной идеологий - написали.
|
|
| |
Haoose
|
Дата: Среда, 01.11.17, 18:59 | Сообщение # 9102 |
|
Цитата Valindell (  ) когда игра запустилась денува уже исполнила своё предназначение и и процесс её закрылся Это не так. Разрабы могут прятать любые функции игры под ней. Иногда эти функции вызываются и в процессе игры и довольно часто.
|
|
| |
Reynor
|
Дата: Среда, 01.11.17, 19:03 | Сообщение # 9103 |
|
kornelijus, дружище, их политика и отношение в покупателям, это другой разговор. Я с тобой согласен, все это не хорошо, я тоже приветствую открытость. И хотел бы, что бы они дали внятные ответ, но кто их дает )))
|
|
| |
kornelijus
|
Дата: Среда, 01.11.17, 19:16 | Сообщение # 9104 |
|
Цитата Reynor (  ) я тоже приветствую открытость. p.s. и потому я на стороне пиратов, хотя было время покупал лицензионные ....
|
|
| |
Valindell
|
Дата: Среда, 01.11.17, 19:18 | Сообщение # 9105 |
|
Цитата Haoose (  ) Разрабы могут прятать любые функции игры под ней. Иногда эти функции вызываются и в процессе игры и довольно часто.
нет, процесс денувы закрывается, и запускается игра, больше денува не запускается, только при следующем запуске её суть - защитить юплей от реверс инжиниринга
|
|
| |
Reynor
|
Дата: Среда, 01.11.17, 19:24 | Сообщение # 9106 |
|
Valindell, ммм, четкие нотки знакомого бреда. А я тебя узнал, даже впн не помог
|
|
| |
ENEY
|
Дата: Среда, 01.11.17, 19:30 | Сообщение # 9107 |
|
Есть два источника в которых сказано, что Д не влияет(значительно) на производительность игры. Ок, кто-то не верит юбикам, но не верить Creative Assembly, ребятам которые делают эксклюзивы на ПК, я не вижу повода.
Показать проценты на сколько нагружает? И кто это должен сделать сама Denuvo Software Solutions GmbH что ли? Вы же не верите двум топовым компаниям и хотите сказать что поверите данным от самих австралийцев что ли?
Цитата Вот серьёзно, какой издатель в своём уме скажет, что они сфейлили с защитой?
Обычно хватает просто молчать и не давать никаких комментариев.
Цитата Взять тот же EA с MEA. Они разве говорили, что защита влияет на плохую оптимизацию игры? Нет, они опровергли такие заявления, а потом просто взяли и удалили защиту.
Я не особо уловил связь, оптимизации и удаления защиты в ЕА, но удалили они денуво после взлома, как и другие издатели это делали, так так толку с защиты уже не будет. А с титаном там вообще другая история, я молчу уже что там хорошая оптимизация была на старте, она кстати никак не изменилась после удаления денуво, но игру еще не могли взломать очень долго(по не понятным причинам).
Reynor, Ага, опять понесло парнишу)
|
|
| |
Haoose
|
Дата: Среда, 01.11.17, 19:34 | Сообщение # 9108 |
|
Цитата Reynor (  ) А я тебя узнал
Зачем узнавать, просто бань этого веселого парня и всё. Спасибо.
Цитата ENEY (  ) Вы же не верите двум топовым компаниям Понимаешь, это же просто слова, нет ни графиков, ни видео, ни самих EXE. Мало ли что, как и где они тестировали.
|
|
| |
ENEY
|
Дата: Среда, 01.11.17, 19:35 | Сообщение # 9109 |
|
Haoose, Цитата Понимаешь, это же просто слова, нет ни графиков, ни видео, ни самих EXE. Мало ли что, как и где они тестировали
Спору нет, но и обратного нету. Имеем то, что имеем)
|
|
| |
Haoose
|
Дата: Среда, 01.11.17, 19:39 | Сообщение # 9110 |
|
ENEY, мне бы тоже, как и вам, были бы интересно посмотреть на публичные графики сравнения, если бы... я сам лично не видел СКОЛЬКО вызовов защиты уже только при старте игры и во время нее происходит. Это жесть. Если бы она отрабатывала только при старте, как тут некоторые думают - да ее бы давно просто и быстро снимали как и другие легкие защиты. Хорошо что группы нашли лазейку для генерации лицухи, а они все пытаются защититься от этого, пока не помогает.
|
|
| |
Reynor
|
Дата: Среда, 01.11.17, 19:40 | Сообщение # 9111 |
|
Цитата Valindell (  ) сейчас ни один нубас не несёт бреда что стим не защита, видимо не зря я напрягался
Цитата Haoose (  ) сам лично не видел СКОЛЬКО вызовов защиты уже только при старте игры и во время нее происходит. Неужели столько, что "ложится" проц?
|
|
| |
SaintGarty
|
Дата: Среда, 01.11.17, 19:50 | Сообщение # 9112 |
|
Reynor, это довольно просто проверить. Запусти игру и мониторь проц, пока висит картинка с надписью "АС:О" то есть игра даже не запустилась, проц забьется на пару секунд процентов так на 60+ -, отсюда и думаем что и сколько жрет)) вряд-ли эта "картинка" сжирает топовые процы в главном меню кстати нагрузка около 50, так что тоже можно додумать) ибо обрабатывать в эти моменты попросту нечего. но опять же это всё догадки
|
|
| |
ENEY
|
Дата: Среда, 01.11.17, 19:53 | Сообщение # 9113 |
|
SaintGarty, Цитата это довольно просто проверить. Запусти игру и мониторь проц, пока висит картинка с надписью "АС:О" то есть игра даже не запустилась, проц забьется на пару секунд процентов так на 60+
Ты не поверишь, но запусти хром и проверь проц и там тоже подскочит нагрузка на проц... Например, у меня с десятком расширений хром при запуске подгружает проц до 70%.(Тут должно быть что то в духе, о боже хром забивает проц, но мы это упустим) Странное заявление конечно.
|
|
| |
Undead_75
|
Дата: Среда, 01.11.17, 19:59 | Сообщение # 9114 |
|
Таки странно, никаких апдейтов, кряков от CPY или Панков. Неужто вплотную заняты растрескиванием ассассина?
|
|
| |
Reynor
|
Дата: Среда, 01.11.17, 20:00 | Сообщение # 9115 |
|
Цитата SaintGarty (  ) роц забьется на пару секунд процентов так на 60+ -, отсюда и думаем что и сколько жрет)) вряд-ли эта "картинка" сжирает топовые процы
 или ты стебешься? Потому что если ты серьезно, то я даже не знаю что сказать...
Цитата Undead_75 (  ) Таки странно, никаких апдейтов, кряков от CPY или Панков. Неужто вплотную заняты растрескиванием ассассина? Будем надеяться что так :)
|
|
| |
Undead_75
|
Дата: Среда, 01.11.17, 20:07 | Сообщение # 9116 |
|
Reynor, да не, лучше бы действительно вместо ассассина выпустили апдейты к тотал вару, вд2 или еще к каким-либо другим играм, на которые вышли глобальные патчи. Хотя народ, конечно, больше ждет именно кредо убийцу.
|
|
| |
dimon
|
Дата: Среда, 01.11.17, 20:18 | Сообщение # 9117 |
|
а по ассасину нет новостей?
|
|
| |
LarsUp71
|
Дата: Среда, 01.11.17, 20:33 | Сообщение # 9118 |
|
dimon, Какие новости?Крякеры никогда не говорили о сроках выхода кряков.
|
|
| |
Haoose
|
Дата: Четверг, 02.11.17, 01:23 | Сообщение # 9119 |
|
Вот интересный пример можете глянуть из Need For Speed в соседней теме: http://antistarforce.com/forum/68-18681-958520-16-1509571277 Посмотрите и возвращайтесь. Как видите, и там нагрузка на проц бешеная. А ведь обратите внимание! На игре нет VMP. Вы читали новости про дикий жор проца в ACO, но там было написано якобы что это вызвано одновременным использованием двух защит. Как видите, это не так. В ассасине VMP проц практически не нагружает. Основную нагрузку конешно создает ваша любимая денува. И ладно бы она что-то полезная выполняла. Но... Вы бы видели код... Это просто треш какой-то. Вот пример из реального кода ACO:
Все эти команды по очереди выполнит Ваш процессор, за Вашу электроэнергию Можете взять калькулятор и посчитать что получится. А получится единичка, т.е. всю эту кашу можно было бы заменить просто на одну команду:
 И такого вот мусора в денуве много. Или такого, когда выполняется ряд арифметических действий над одним из регистров, а потом просто берут и тупо затирают его, никак не используя результат выше выполненных действий. Вот такие они офигевшие  А посмотрите как часто она чекает параметры вашего компа. Можно поставить бряки на некоторые параметры, у которых писалось в этой теме давным давно и посмотреть. Это же тысячи проверок, сотни тысяч ненужных инструкций процессора. И вся эта радость исполняется ведь и у пиратов, и у лицушников. Будем надеяться что сцена не остановится на достигнутом и будет и дальше ломать в пару дней свежие игры с ней и эту с..нь наконец перестанут использовать. #СмертьДенуве
|
|
| |
k3rnel-pan1c
|
Дата: Четверг, 02.11.17, 01:37 | Сообщение # 9120 |
|
Цитата Undead_75 (  ) в парке же тоже вмп определялся, но его почему-то взломали за двое суток вроде. С чем это связано? Как известно, для обхода защиты нужна оригинальная точка входа OEP (поле в PE, в котором хранится адрес первой инструкции (WinMain, main, startup)). Обе vm’ки (VMProtect и Denuvo) действуют лишь в качестве обфускатора кода – мутация, запутывание, мусорные команды, специфичная архитектура и т.д. и т.п.
Деобфускацию (процесс обратного разбора, или реверс-инжиниринг) пока оставим и перейдем в PE заголовок. Если посмотреть на формат исполняемого файла, то можно найти интересную таблицу TLS CallBack, которая вызывается из системы при создании потоков. Главная фишка этой таблицы – вызов потока до точки входа (секция CRT). А если создать поток до точки входа и вызывать из него функцию антидебага (к примеру IsDebuggerPresent), то при попытке реверса такого файла (структура DEBUG_EVENT, WaitForDebugEvent/ContinueDebugEvent, etc.) мы попадем на IMAGE_TLS_CALLBACK, где разработчики «заботливо» завершают процесс (TerminateProcess) и выводят сообщение мол ребята, вы обломались. Чтобы было более понятно о чем речь, приведу небольшой код для наглядности
Код #include <Windows.h>
#pragma comment (linker, "/INCLUDE:_tls_used") #pragma section (".CRT$XLY", long, read)
void __stdcall TLSCallBack(void *, unsigned long, void *) { if (IsDebuggerPresent()) { MessageBox(NULL, "A debugger has been found running in your system.\n" "Please, unload it from memory and restart your program.", "ACOrigins.exe", MB_ICONERROR); TerminateProcess(GetCurrentProcess(), 0); } } __declspec(allocate(".CRT$XLY"))PIMAGE_TLS_CALLBACK pTLSCallBack = TLSCallBack;
int __stdcall WinMain(HINSTANCE, HINSTANCE, char *, int) { MessageBox(nullptr, "Success!", "ACOrigins.exe", MB_OK); return 0; } В visual studio при компиляции в режиме debug попасть на точку входа (WinMain) не получится, будет вызван TLSCallBack с последующим завершением процесса. В режиме release программа сработает нормально и начнется, как и положено с WinMain. Естественно отлаживать такую программу вне стен студии бессмысленно. Для реальной защиты нужно писать свою функцию детекта отладчика с передаваемыми параметрами, такими как handle, pID, exitCode и т.д.
Теперь немного об деобфускации. При реверсе следует рассматривать исполняемые файлы, которые не модифицируют собственный код, так как статический анализ самомодифицирующихся программ практически не возможен. Это связано с тем, что статически нельзя определить, будет ли анализируемый участок кода изменяться перед исполнением или нет. Для начала нужно разбить код на линейные участки для последующего восстановления структуры данных, учитывая, что при обфускации модифицируется граф потока управления (Control Flow Graph (CFG)). Обфускация CFG производится либо над исходным кодом программы либо в процессе ее компиляции. Наличие всех линейный участков необходимо для статической бинарной трансляции. Косвенные переходы, в этом случае, образуются при вызове виртуальной функции. Чтобы вызвать виртуальную функцию надо взять указатель на таблицу виртуальных функций в экземпляре класса, загрузить его в регистр и сделать call по смещению, соответствующему нужной функции. Проблема статического обнаружения адресов виртуальных функций заключается в том, что адрес этой таблицы загружается в экземпляр класса в конструкторе. А конструктор находится в совершенно другой части программы. Адреса функций загружаются с помощью инструкций mov или lea, у которых второй операнд это адрес в памяти. Если этот адрес находится в секции кода, то это адрес функции, а если в секции данных, то адрес указателя на функцию.
Касаемо самих игр. В парке нет колбеков с антиотладочными функциями. Ребятам нужно было лишь проанализировать обфускацию, поработать с CFG, найти OEP (и поправить эмулятор). Методы работы с vm’ками у них уже отлажены (тут собственно нет особой разницы vmprotect это, или denuvo, или всё сразу, принцип одинаковый), поэтому и взлом парка прошёл быстро (учитывая, что игра была накрыта вмпротектом). А вот с ассассином всё сложнее. Тут есть два колбека, один из которых детектит отладочные функции. Поэтому реверсить код приходится на статике, а это, как я описал выше, один сплошной геморрой. Как только разберутся с антидебагом, сразу доберутся до vm’ок, а там те же несколько дней на разбор как и с парком.
|
|
| |
kornelijus
|
Дата: Четверг, 02.11.17, 10:47 | Сообщение # 9121 |
|
Цитата k3rnel-pan1c (  ) ут есть два колбека , а сколько теоретически их можно нaвесить на оду игру ?
|
|
| |
k3rnel-pan1c
|
Дата: Четверг, 02.11.17, 11:13 | Сообщение # 9122 |
|
Цитата kornelijus (  ) а сколько теоретически их можно невесит на оду игру ? Смотря для каких целей они используются. Колбеки нужны не только для антипиратской защиты. Иногда необходимо загрузить в кучу какие-либо данные до загрузки самой программы. К примеру два колбека, которые инициализируют переменные до самой программы
Код static int val1 = 0; static int val2 = 0;
void __stdcall tls_callback1(void *, unsigned long, void *) { if (Reason == DLL_PROCESS_ATTACH) val1 = 0xA; }
void __stdcall tls_callback2(void *, unsigned long, void *) { if (Reason == DLL_PROCESS_ATTACH) val2 = 0xF; }
#pragma comment (linker, "/INCLUDE:_tls_used") #pragma comment (linker, "/INCLUDE:p_tls_callback1") #pragma comment (linker, "/INCLUDE:p_tls_callback2") #pragma const_seg (push) #pragma const_seg (".CRT$XLAAA") EXTERN_C const PIMAGE_TLS_CALLBACK p_tls_callback1 = tls_callback1; #pragma const_seg (".CRT$XLAAB") EXTERN_C const PIMAGE_TLS_CALLBACK p_tls_callback2 = tls_callback2; #pragma const_seg (pop) #endif
int main() { printf("Values from TlsCallBacks: tls1 = 0x%X, tls2 = 0x%X\n", val1, val2); getchar(); return 0; } При отладке к ним сложно добраться. Если говорить просто - колбеки обитают вне границ программы, хотя и взаимодействуют с ней. И скорее всего, антиотладочные функции спрятаны где-нибудь в библиотеках (явно писать их в экзешнике смысла нет).
|
|
| |
kornelijus
|
Дата: Четверг, 02.11.17, 11:20 | Сообщение # 9123 |
|
... и так сделано у assassins ?
|
|
| |
LarsUp71
|
Дата: Четверг, 02.11.17, 11:30 | Сообщение # 9124 |
|
Haoose, Надеюсь эту тему подымут,ведь пару дней назад все говорили о протекторе,все игровые сайты об этом писали,но дело то не в нем и надеюсь наступит тот день,когда крякеры научаться полностью выпиливать денюву с игр,сейчас это кажется невозможным.
|
|
| |
Haoose
|
Дата: Четверг, 02.11.17, 11:45 | Сообщение # 9125 |
|
Цитата k3rnel-pan1c (  ) Как только разберутся с антидебагом, сразу доберутся до vm’ок, а там те же несколько дней на разбор Хочешь сказать что группы разобравшившие VM Денувы до сих пор не смогли совладать с обычным антидебагом VMP?
|
|
| |
LarsUp71
|
Дата: Четверг, 02.11.17, 12:12 | Сообщение # 9126 |
|
Haoose, а вот этот "мусор"который они добавляют как можно больше,это для того что бы как можно дольше продлить процесс взлома?ведь больше никаких функции они не выполняют.
|
|
| |
Haoose
|
Дата: Четверг, 02.11.17, 12:21 | Сообщение # 9127 |
|
LarsUp71, это обфускация, которая затрудняет/замедляет чтение/разбор кода
|
|
| |
k3rnel-pan1c
|
Дата: Четверг, 02.11.17, 12:35 | Сообщение # 9128 |
|
Цитата Haoose (  ) Хочешь сказать что группы разобравшившие VM Денувы до сих пор не смогли совладать с обычным антидебагом VMP? Откуда же мне это знать? В данном контексте имелось ввиду совсем другое. Речь шла о сравнении защиты парка и ассассина. В обоих играх имеет место быть vmp, который грубого говоря просто "засрал" код. Парк вскрыли за пару дней (группы разобрались с vmp). Ассассина вскрывают уже почти неделю с тем же vmp, но +callback.
|
|
| |
Dimon1987
|
Дата: Четверг, 02.11.17, 17:24 | Сообщение # 9129 |
|
Кто нибудь в курсе в новой колде будет денуво???
|
|
| |
lassuel
|
Дата: Четверг, 02.11.17, 17:26 | Сообщение # 9130 |
|
Dimon1987, я не думаю, что они настолько придурки. Не использовали покуда. Хотя ради бабла сейчас что только не придумают.
|
|
| |
k3rnel-pan1c
|
Дата: Четверг, 02.11.17, 17:44 | Сообщение # 9131 |
|
Цитата kornelijus (  ) и так сделано у assassins ? Вроде того. Посмотрел на ловушку для отладчика (trap to debugger)
В декомпилированном виде
И далее
Функция большая, и в конце можно легко увидеть тот самый MessageBox, GetCurrentProcess и TerminateProcess (то, что я и показывал на примере кода). Вот что привлекло внимание: _unwind (в общем понимании это зарезервированная функция) и__CxxFrameHandler3_0 (это процессорное исключение, как __CxxThrowException). Когда возникает исключение, процессор вызывает обработчик. Точка входа обработчика находится в IDT таблице. Всего обработчиков 256. Первые 32 зарезервированы под сами исключения (остальные это прерывания). Когда компилятор встречает блок try/except, генерируется метаинформация, в которой содержится информация о расположении каждого блока в PE (обычно это секция .pdata). Кроме того, для каждого блока try/except в .pdata хранится информация об адресе его обработчика. Часть обработки блока try/except обрабатывается системой. Обработчики сохраняют всю информацию для обработки и информацию для конкретного типа исключения. Затем все эти обработчики вызывают функцию поиска и вызова обработчика. Функция сканирует .pdata с целью найти обработчик, соответствующий конкретному участку кода, в котором возникло исключение. Если обработчик найден, то ОС передает ему управление, в противном случае приложение завершается с ошибкой.
В общем уровень уже очень низкий (ядро), и увы моих знаний не хватает (хоть я и программирую достаточно долго).
|
|
| |
Haoose
|
Дата: Четверг, 02.11.17, 18:10 | Сообщение # 9132 |
|
Dimon1987, нету ее там, уже ж в теме игры писали.
|
|
| |
LarsUp71
|
Дата: Четверг, 02.11.17, 19:52 | Сообщение # 9133 |
|
Пираты обещают ломать игры с Denuvo еще быстрее Так, один из членов пиратской группировки рассказал изданию pcgamesn, что им удалось найти способ для воспроизведения ключей шифрования, а будущем время взлома сократится еще больше. Они также отметили, что Denuvo в любом случае нужно что-то менять в работе системы, ее эффективность продолжает падать.
|
|
| |
k3rnel-pan1c
|
Дата: Четверг, 02.11.17, 19:53 | Сообщение # 9134 |
|
Ради интереса вскрыл SouthPark в том же месте на предмет наличия какой-нибудь ловушки (хотя итак знал что там её нет, но всё же стоило проверить). Что самое интересное функция аналогичная, но никакого debugbreak и прерывания нет
В итоге на этом месте безобидная функция с проверкой dll библиотеки. Неужели попал на тот самый callback, на котором стопорится вся отладка? Как говорится ушел курить мануалы попробую продвинуться подальше.
|
|
| |
Asasin2343
|
Дата: Четверг, 02.11.17, 19:58 | Сообщение # 9135 |
|
LarsUp71, прям видно как продолжает падать. асасина до сих пор не ломанули)
|
|
| |