Следующая новость
Предыдущая новость

Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий

16.05.2018 13:05
Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий

Содержание статьи

  • Что делаем?
  • Инструменты
  • Процесс
  • Как работает механизм proxy DLL
  • Кодинг
  • Финал
  • Итоги

Total Commander (ранее Windows Commander) — популярный файловый менеджер с графическим интерфейсом для Windows. В интернете на варезных сайтах можно найти множество решений для взлома Total’а. Их неизменный недостаток — костыльность: с выходом новой версии надо проделывать ту же процедуру «лечения» программы вновь и вновь. Но можно и по-другому. Хочешь узнать как и заодно прокачать скиллы в реверсе? Читай эту статью!

GREETINGS

Вначале хочу поблагодарить своих товарищей с сайта exelab.ru и передать привет:

  • Jupiter,
  • Mak,
  • VodoleY,
  • ELF_7719116,
  • Kindly

и многим другим. Спасибо!

Какое-то время назад мой друг Jupiter предложил вместе разобрать алгоритм лицензирования Total’а. Пораскинув мозгами, мы написали генератор лицензии — файлов-ключей. И все было бы замечательно, если бы не присутствие в основе алгоритма лицензирования криптосистемы с открытым ключом — LUC. И ключи, разумеется, для успешного прохождения лицензирования нужно знать.

LUC — это похожая на RSA криптосистема. Ее отличие от RSA заключается в использовании последовательностей Люка вместо возведения в степень. Как и для RSA, для генерации закрытого ключа необходимо знать множители (P и Q), которые можно получить через факторизацию модуля (N). Но в нашем случае длина модуля — 832 бита. Естественно, ни у меня, ни у Jupiter’а таких вычислительных мощностей нет. А на квантовый компьютер мы еще денег не накопили. ????

Как повлияло бы на описанную атаку увеличение модуля (N) до 2048 бит?

  • Увеличило бы время атаки вдвое
  • Сделало бы атаку невозможной за разумное время
  • Никак не повлияло бы

Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий Загрузка ...

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

Помимо LUC, в Total’е присутствуют механизмы самозащиты, защита от модификации исполняемого файла. Можно, конечно, хардкорно запатчить файл, но это как раз и есть «костыль», который лишает обход защиты универсальности.

Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий

WARNING

Статья публикуется в образовательных целях. Редакция не несет ответственности за любой вред, причиненный материалами данной публикации. В статье намеренно не рассматривается сам алгоритм лицензирования, а демонстрируются практические аспекты имплементации обхода защиты с помощью техники proxy DLL.

Что делаем?

Наша задача — заменить модуль (N) в исполняемом файле программы, не нарушая его целостности. Тогда наш сгенерированный файл ключа будет верно расшифрован и программа будет зарегистрирована.

Существует два варианта решения данной задачи:

  1. Написать загрузчики для х86- и х64-версий программы (Loader).
  2. Написать proxy DLL, которые будут выполнять ту же функцию, что и загрузчики.

Оба варианта позволяют беспрепятственно обновлять программу. Но я выбираю второй вариант, он более удобный. В этом варианте не нужно будет исправлять пути в свойствах ярлыков программы с исполняемого файла Total’а на наш лоадер. Достаточно просто скопировать DLL’ки и файл ключа в папку с установленной программой.

Инструменты

  • x64dbg — отладчик;
  • masm x32 — компилятор;
  • masm x64 — компилятор;
  • wincmd.key — ключ для программы, сгенерированный моим с Jupiter’ом кейгеном.

Процесс

Что делает proxy DLL?

  • Устанавливает локальный прокси для эмуляции лицензирования онлайн
  • Перенаправляет вызовы функций оригинальной DLL через себя, подменяя используемые для проверки лицензии
  • Запускается во втором кольце защиты, подменяя указатель на лицензионный ключ

Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий Загрузка ...

Я скачал с официального сайта последнюю бета-версию, включающую в себя обе версии программы (х86 и х64). Установил директорию, которую предложил инсталлятор (C:totalcmd).

Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий
Установленные файлы

Теперь запускаем на выбор TOTALCMD.EXE или TOTALCMD64.EXE, без разницы. Получаем вот такое окно.

Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий

Это было ожидаемо. ???? Теперь запускаем Total под отладчиком и заходим в закладку Symbols.

Тотальный разгром! Реверсим Total Commander и обходим защиту всех версий

В левой половине окна видим загруженные в память процесса модули (DLL). Из всех модулей нас интересуют только две динамические библиотеки — это version.dll и winspool.drv.

Пусть тебя не смущает, что у winspool.drv расширение не dll, на самом деле внутренняя структура у winspool.drv как у обычной динамической библиотеки. Эти два модуля и будут кандидатами для написания одноименных proxy DLL для Total’а.

Продолжение доступно только подписчикам

Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

1 год

6890 р.

Экономия 1400 рублей!

1 месяц

720 р.

25-30 статей в месяц

Уже подписан?

Источник

Последние новости