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’а.

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

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

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

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.


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

Ugears. Новые модели подвижных конструкторов из дерева

Услышав слова «деревянный конструктор», ты, наверное, представляешь себе этакий Lego для с…