Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Протекторы —› Взлом игр Electronic Arts (ActivationUI.exe, Activation.dll) |
Посл.ответ | Сообщение |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 11 января 2015 11:53 · Личное сообщение · #1 Electronic Arts Origin Service (ака steam №2) https://www.origin.com/ru-ru/store/ (ага! вот там трэшак всякий продают) intro: короче после некоторых событий, которые произошли вот в этой задолбавшей Ввиду моего глубокого негодования(НУ ЭТОЖ НЕ СТАРФОРС И НЕ СЕКУРОМ), желаю восполнить данный пробел. Накопал немножко, желаю поделиться. Авось кто восполнит пробелы и можно будет накатать полноценную статью. Что мы имеем вначале: 1. Исходный PE-файл, который зашифрован. Точка входа смотрит сразу в... 2. Activation.dll(Core/Activation.dll). Т.е. там сразу выполнен Code:
ну по типу как в старфорсе (или солидшиелде)...ну не важно 3. ActivationUI.exe(Core/ActivationUI.exe) 4. Клиент origin Главная суть проблемы заключается в расшифровке секций .text и .rdata, которые зашифрованы (если я правильно научился угадывать Code:
+ сверил с libeay32.dll, прикинул в уме-таки да, похоже AES. OpenSSL - это 100% точно. Подетально имеем следующую картинку: Activation.dll сначала делает Code:
чтобы извлечь из цели две структуры: Code:
их роль пока не совсем ясна до конца. Причем адрес (более точно: raw-смещение для seek) Security_Table_block берется из Origin_block. затем Activation.dll делает: Code:
и Code:
т.е. открывает путь для обмена данными между двумя процессами. Activation.dll затем порождает ActivationUI.exe с аргументом "/SMOID= %хэндл от CreateFileMapping%", который собственно вторым процессом и выступит. В свою очередь, ActivationUI.exe порождает Origin.exe(origin-клиент) или связывается, если тот уже запущен. Судя по всему, от orgin-клиента требуется только подтверждение входа в origin (offline или online). Кстати, после этого, формально работа активэйшн dll'ки и exe'шника закончена, ибо сам origin может только «правильно» запустить игру (нужен макрос специальный в командной строке, типа такого -=..\..=-\ и очевидно есть проверка по PID потом). Короче имеем связь: Activation.dll <-> ActivationUI.exe <-> Origin.exe Насчет последних двух уместно заметить, что они завязаны только на авторизации (точки останова на filemapping и mutex в origin-клиенте «молчат»). Однако неформально пойдем далее. dll требует от exe (MapViewOfFile-UnmapViewOfFile) AES-ключ(строка UNICODE «Key») и какие-то параметры лицензии и responce... смс по mapping «шифруются» xor с определенной маской типа 6$sjP3qwe1q@pO3o#5jNA(вообще их там несколько, в зависимости от типа смс). Судя по всему, ActivationUI.exe сам вытаскивает откуда-то ключ, который хранится на машине (offline режим никто не отменял). OEP и дамп: Переход на OEP осуществляется естественно с dll'ки, причем адрес расшифрован(AES ключом?) и находится в стеке: Code:
тащемта, после выхода из игрушки, dll'ка подчищает за собой хендлы, мьютексы, какой-то там свой loop thread закрывает. Ничего особенного с восстановлением дампа нет-PeTools, ImpRec (в моем случае с игрушкой, правда, часть импорта пришлось руками дописать-не распознавался. впрочем, это нормально), релоки... В ИТОГЕ у меня дамп работал без origin; НО, есть небольшой нюанс - в target в самом начале (WinMainCRTStartup когда вызывает код самой программы), стоит маленькая функа, которая проверяет, есть ли связь с Origin-клиентом (чтобы проверить offline/online), так вот её нужно немножко «полечить» EAX=1 или RAX=1 (короче, return true). Другие наблюдения: 1. Куча (штук 5) тредов во всех трех цепочках с непонятной функциональностью. 2. IGO32.dll (igo64.dll), которые Origin.exe инжектит в target. Причем, хук в target на LoadLibrary остается до конца. Тут работает также igoproxy64.exe | Сообщение посчитали полезным: hello, v00doo, plutos, gurololicon, zNob, HandMill, jude, SasukeK93 |
|
Создано: 11 января 2015 19:34 · Личное сообщение · #2 ELF_7719116 пишет: похоже AES SHA160/AES 7d15_11.01.2015_EXELAB.rU.tgz - OriginClientService.exe.cc.7z |
|
Создано: 11 января 2015 21:11 · Личное сообщение · #3 В первых версиях, при наличии ключа, после прогрузки длл и прыжка на оеп. Имели полностью рабочии ехе в памяти. Без ВМ, защиты импорта и остального. Т е снималось не сложнее упх. Потом под еа оригин стали класть вм секурома. Дальше я не копал, т к не знал для чего там секур. По сути он выполнял функу вм без активации, но как то инициализировался. |
|
Создано: 12 января 2015 03:04 · Личное сообщение · #4 ELF_7719116 пишет: Ничего особенного с восстановлением дампа нет-PeTools, ImpRec (в моем случае с игрушкой, правда, часть импорта пришлось руками дописать-не распознавался. впрочем, это нормально) Вообщето раньше была криптована только секция кода, скопировав в его в оригинальный файл и найдя оригинальную точку входа в Import Directory и исправив ОЕР можно было получить идеальный экзешен. ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 12 января 2015 07:35 · Личное сообщение · #5 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 20 февраля 2018 18:48 · Личное сообщение · #6 |
|
Создано: 21 ноября 2018 04:31 · Личное сообщение · #7 Приветствую всех, у меня появился вопрос. При запуске игры x64 сначала идет проверка Activation64.dll .. смотрит дальше файл лицензии .. ну а потом закрывает текущий процесс и после всех манипуляций Origin запускает новый процесс игры как я понял с расшифрованными секциями и уже без подгрузки Activation64.dll. Вопрос заключается в том, что exe игры крашится (Access violation writing location ntdll.dll) после всех моих монипуляций: Убрал проверку Activation64.dll и изменил переход OEP на действительный (реальный) старт игры, пофиксил таблицу импорта. Может кто подскажет в чем причина? P.S. Могу записать видео как все делал. |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 21 ноября 2018 10:10 · Личное сообщение · #8 jude x64 игра - название у игры есть? Небось DENUVO ещё накрыта. jude пишет: При запуске игры x64 сначала идет проверка Activation64.dll .. смотрит дальше файл лицензии .. ну а потом закрывает текущий процесс и после всех манипуляций Origin запускает новый процесс игры как я понял с расшифрованными секциями и уже без подгрузки Activation64.dll. Нет, не совсем так. В любом случае, будет грузиться Activation64.dll и проверять всегда лицуху. Второй раз - если игра не из клиента origin (правильно OriginCore это называется, судя по SDK) запущена была. Activation64.dll получает по каналу от OriginCore ключ, расшифровывает всё, восстанавливает секции и идёт jmp на OEP. Тут должен быть чистый дамп по всем канонам (помнится OllyDmpEx к x64dbg делал). jude пишет: Вопрос заключается в том, что exe игры крашится (Access violation writing location ntdll.dll) после всех моих монипуляций: Убрал проверку Activation64.dll и изменил переход OEP на действительный (реальный) старт игры, пофиксил таблицу импорта. Наверное-ж требуется корректно OriginStub вырезать. Первая инициализация (OriginInit) + встроенная в функа (OriginUpdate). В каком месте именно краш(Середина игра - старт игры?)? |
|
Создано: 21 ноября 2018 15:39 · Личное сообщение · #9 ELF_7719116 пишет: x64 игра - название у игры есть? Небось DENUVO ещё накрыта. Игра Battlefield 4, версия exe: 1.8.2.48475 ELF_7719116 пишет: Нет, не совсем так. В любом случае, будет грузиться Activation64.dll и проверять всегда лицуху. Второй раз - если игра не из клиента origin (правильно OriginCore это называется, судя по SDK) запущена была. Activation64.dll получает по каналу от OriginCore ключ, расшифровывает всё, восстанавливает секции и идёт jmp на OEP. Тут должен быть чистый дамп по всем канонам (помнится OllyDmpEx к x64dbg делал). Да согласен. Просто не стал расписывать что уже было написанно в начале темы. ELF_7719116 пишет: Наверное-ж требуется корректно OriginStub вырезать. Первая инициализация (OriginInit) + встроенная в функа (OriginUpdate). В каком месте именно краш(Середина игра - старт игры?)? На самом старте игры, даже окно игры не успевает создаться. Добавлено спустя 2 часа 15 минут Эхх, столько много проверок OriginStub: OriginStartup, OriginRequestAuthCode, OriginGetSettingSync, OriginGetGameInfoSync, OriginDestroyHandle, OriginShutdown, OriginUpdate, OriginCheckOnline, OriginGetProfileSync, OriginGetProfile, OriginQueryPresence, OriginRegisterEventCallback, OriginStartGame, OriginIGOShutdown И это еще не полный список. Даже не знаю как все это вырезать, т.к крашится игра непонятно почему. |
|
Создано: 21 ноября 2018 18:15 · Поправил: v00doo · Личное сообщение · #10 ELF_7719116 пишет: Наверное-ж требуется корректно OriginStub вырезать. Первая инициализация (OriginInit) + встроенная в функа (OriginUpdate) jude пишет: OriginStub Это не stub, это Origin SDK, игра получает необходимую информацию, например ник пользователя, статус сети и прочее, тоже самое что есть у steam или uplay, только тут нет никаких публичных документаций само собой, парни со сцены реверсят и пишут эмуляторы клиентов. ELF_7719116 пишет: Первая инициализация (OriginInit) + встроенная в функа (OriginUpdate) Инит говорит сдк какой идишник игры стартует, update служит для обновления колбечин сдк, его не надо вырезать уж точно. Stub там один, protection id называет его EaDRM, там просто криптовка поверх бинаря, дальше восстанавливаются директории, если они были сперты и все, бинарь дальше чист, если там нет denuvo. | Сообщение посчитали полезным: Jupiter |
|
Создано: 21 ноября 2018 19:03 · Личное сообщение · #11 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 22 ноября 2018 19:10 · Личное сообщение · #12 v00doo пишет: Это не stub, это Origin SDK Origin SDK это как-бы всё общее. первую инит функа stub/EaDRM, да v00doo пишет: и пишут эмуляторы клиентов. клиент абсолютно не обязательно эмулить (это 100%) v00doo пишет: update служит для обновления колбечин сдк, его не надо вырезать уж точно. если стек коллбеков пуст, то оно не нужно. Если не был инициализирован, то он просто выводит OutDebugString а-ля "Origin SDK not running" v00doo пишет: Инит говорит сдк какой идишник игры стартует не только. В инит 4 параметра должно передаваться: Code:
jude пишет: Игра Battlefield 4, версия exe: 1.8.2.48475 Да, знаю такую, ковырял. Ещё теперь внутри интерфейс сетевой игры сделали?? Раньше браузер запускался. Если просто дамп корректно сделать, а Origin SDK не трогать - игра будет просто запускаться без крашей (если Origin CORE включен, то оно запустится без проблем в распакованном виде, при замене bf4_dump.exe на bf4.exe)? |
|
Создано: 22 ноября 2018 20:04 · Поправил: jude · Личное сообщение · #13 ELF_7719116 пишет: Да, знаю такую, ковырял. Ещё теперь внутри интерфейс сетевой игры сделали?? Раньше браузер запускался. Если просто дамп корректно сделать, а Origin SDK не трогать - игра будет просто запускаться без крашей (если Origin CORE включен, то оно запустится без проблем в распакованном виде, при замене bf4_dump.exe на bf4.exe)? Да верно теперь интерфейс внутри игры сделали. Я толком и дамп нормально сделать не могу, вот адресс реального старта игры как я думаю 0x1411840A8 он же в дальнейшем запускает фунцию WinMain. Проблема еще в том, что отладить процесс который был запущен OriginCore-м не получается. Т.к перехватить прямо старт запуска нового процесса игры не получается. |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 22 ноября 2018 20:47 · Поправил: ELF_7719116 · Личное сообщение · #14 jude пишет: Т.к перехватить прямо старт запуска нового процесса игры не получается. Дааа, есть такое дело. Необходимо управление успеть перехватить в activation(64).dll Где-то у меня валялся старый bf4_патченный.exe, корректно сдампленный. Со стабом/EaDRM патченным браузер запускался. Скриншот с exe'шника нашел - сам exe файло пока нет. upd BF4_Dumped_1.4.2.23831 в личку отправил a5b2_22.11.2018_EXELAB.rU.tgz - TANK.jpg | Сообщение посчитали полезным: jude, sefkrd |
eXeL@B —› Протекторы —› Взлом игр Electronic Arts (ActivationUI.exe, Activation.dll) |