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 бит?

Загрузка ... Загрузка ...

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

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

WARNING

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

 

Что делаем?

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

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

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

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

 

Инструменты

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

Процесс

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

Загрузка ... Загрузка ...

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

Установленные файлы
Установленные файлы

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


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


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

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

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

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

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

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

10 комментариев

  1. baragoz

    16.05.2018 at 14:43

    А зачем нужно ставить новые версии ТС? У меня старая, серийник Университета Амстердама 😉

  2. Egor3f

    16.05.2018 at 16:33

    Double Commander бесплатный, опенсорсный, кросплатформенный, копирует интерфейс TC и выполняет большую часть его функционала.
    Статья интересная, автору спасибо!

    • Kakoluk

      16.05.2018 at 23:16

      Двухпанельный файловый менеджер. Что может быть проще и гениальнее? Только трехпанельный.(Шучу) А теперь серьёзно: это не какой то там позорный busybox или же command.com .
      Это интерфейс с «человеческим» лицом. 🙂

  3. Андрей Васильков

    Андрей Васильков

    16.05.2018 at 18:24

    Double Commander только внешне похож, а TTCMD с плагинами заменяет 100500 других программ.

  4. inkognito.o

    16.05.2018 at 20:43

    Как честный пользователь Total Commanderа я в шоке!

  5. inkognito.o

    16.05.2018 at 20:47

    я вот по ностальгии по Amiga использую Directory Opus. Разработчики эту прогу успешно развивают и хорошии фичи вливают. Ещё есть чешская Altap Salamander!

  6. il--ya

    18.05.2018 at 12:07

    Total Commander — первая и одна из очень немногих программ, за которую я оплатил лицензию. Просто потому, что она того заслуживает. Да не так и дорого стоит для такого незаменимого и удобного инструмента — EUR 37, студентам и школьникам 28.

  7. JK_MIB

    21.05.2018 at 08:46

    Годный пример как пропатчить чужой код.
    И файлы целы и юзеры (хакеры) довольны)

    З.Ы. пользуюсь FARом

  8. TuMyP

    21.05.2018 at 11:50

    Блин, это, конечно, хакерский подход, но ведь есть способ намного проще, хоть и не труъ: скрипт на autoit, который нажимает нужную кнопочку 🙂

Оставить мнение

Check Also

WWW: Carbon — сервис для создания идеальных скриншотов кода

В теории сделать скриншот кода, чтобы кому-то показать, — задача несложная. В реальности р…