Blog. Just Blog

Исследование защиты программы Secure Eraser

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы Secure Eraser
Скриншот программы Secure Eraser

Программа Secure Eraser от компании ASCOMP предназначена для качественного и безопасного удаления информации с компьютера. Это могут быть временные файлы, данные браузеров, ненужные системные файлы, а также определенные пользователем данные и даже целые жесткие диски. Удаление выполняется с помощью многократной перезаписи информации по промышленным алгоритмам и военным стандартам. Программа вроде как бесплатна для личного использования, но вот "информационные окна" (по терминологии авторов) реально напрягают.

Забираем с офсайта дистрибутив последней версии, устанавливаем, смотрим. Для бесплатного использования требуется раскрыть свою почту и имя. Да ну нафиг, перебьются.

Триальное окно
Триальное окно

На главном окне программы видны первичные признаки триальности: надпись о бесплатном использовании, ссылка на заказ полной версии, кастомная псевдо-форма регистрации. Пока достаточно. Основной исполняемый файл ничем не упакован и по всем признакам он написан на Дельфи, так что для анализа будем использовать декомпилятор IDR. Если предположить, что все отсылки к регистрации после покупки должны пропадать или наоборот, при бесплатном режиме должны отрисовываться, надо проанализировать главное окно программы и найти названия этих текстовых меток.

Ссылка на покупку
Ссылка на покупку

Как видно, ссылка на покупку имеет название "LabelPLUS". Значит теперь надо найти в декомпилированном листинге какие-либо манипуляции с этой меткой. Проще всего это сделать, сохранив проект и затем выполнив глобальный поиск по всем получившимся исходникам.

Сохраняем проект
Сохраняем проект

Поиск строки в файлах проекта выводит нас на здоровенный файл "_Unit140.pas", в котором есть такие строки:
  1.  0084D0FD    lea         edx,[ebp-9C]
  2.  0084D103    call        LowerCase
  3.  0084D108    mov         eax,dword ptr [ebp-9C]
  4.  0084D10E    mov         edx,84D898;'professional edition'
  5. ; Сравнить строки
  6.  0084D113    call        @UStrEqual
  7.  0084D118    jne         0084D140
  8. ; Установить флаг регистрации
  9.  0084D11A    mov         dword ptr [ebx+0A0C],1;TFormMain.ProgramMode:Integer
  10. ; Скрыть триальные строки в интерфейсе
  11.  0084D124    mov         eax,dword ptr [ebx+5EC];TFormMain.LabelPLUS:TLabel
  12.  0084D12A    xor         edx,edx
  13.  0084D12C    call        TControl.SetVisible
  14.  0084D131    mov         eax,dword ptr [ebx+544];TFormMain.LabelPrivate:TLabel
  15.  0084D137    xor         edx,edx
  16.  0084D139    call        TControl.SetVisible
  17.  0084D13E    jmp         0084D173
  18. ; Сбросить флаг регистрации
  19.  0084D140    xor         eax,eax
  20.  0084D142    mov         dword ptr [ebx+0A0C],eax;TFormMain.ProgramMode:Integer
  21. ; Отобразить триальные строки в интерфейсе
  22.  0084D148    mov         edx,dword ptr [ebx+0A94];TFormMain.LangStrings::1
  23.  0084D14E    mov         eax,dword ptr [ebx+5EC];TFormMain.LabelPLUS:TLabel
  24.  0084D154    call        TControl.SetText
  25.  0084D159    mov         eax,dword ptr [ebx+5EC];TFormMain.LabelPLUS:TLabel
  26.  0084D15F    mov         dl,1
  27.  0084D161    call        TControl.SetVisible
  28.  0084D166    mov         eax,dword ptr [ebx+544];TFormMain.LabelPrivate:TLabel
  29.  0084D16C    mov         dl,1
Декомпиляция двоичного кода и немецкая педантичность в названиях рисуют следующую картину. Что-то сравнивается со строкой "professional edition", по результатам сравнения или прячутся или скрываются надписи в окне программы, а главное, что или взводится или сбрасывается определенный флаг под названием TFormMain.ProgramMode. Тут не надо быть провидцем, чтобы понять его назначение. Это состояние зарегистрированности программы. Патчим условный переход по адресу 0084D118 командами NOP, чтобы всегда выполнялась ветка алгоритма, соответствующая зарегистрированному состоянию программы. Сохраняем изменения.

Сообщение о поврежденном файле
Сообщение о поврежденном файле

Запускаем программу и получаем сообщение о поврежденном файле. Вариантов проверки целостности может быть сколько угодно, все зависит от фантазии авторов. До углубления в дебри кода я для начала попробую подкорректировать контрольную сумму в заголовке PE-файла.

Корректировка контрольной суммы
Корректировка контрольной суммы

Сделать это также можно разными способами, я воспользуюсь PEiD с плагином FixCRC.

Программа успешно "зарегистрирована"
Программа успешно "зарегистрирована"

Запускаем программу, все работает. Никаких сообщений о битом файле, никаких окон при запуске и генерации отчета, никаких посторонних надписей в главном окне. Цель достигнута.

Поделиться ссылкой ВКонтакте
Просмотров: 647 | Комментариев: 13

Комментарии

Отзывы посетителей сайта о статье
Жека (23.02.2024 в 21:13):
ManHunter, приветствую ещё раз, можете меня поздравить, докопался я до истины. Теперь никаких лоадеров не нужно, да и зло это. Ломанул их и старую и новую, последнюю версию всех разрядов. Кстати, в Инете так и нет решений, кроме кейгена. Ключи которого безбожно банят, при первом же запуске, если разрешен доступ в сеть. Мой кряк работает при любых условиях, единственное, что не работает - создание загрузочного диска восстановления(ДОБАВЛЕНО В НОВЫХ ВЕРСИЯХ), там уже на серверах они проверяют и никак не обойдёшь, ХОТЯ... КТО ЗНАЕТ. Для чего предназначена прога по любому работает на 100%. Прошу сильно не пинать за коммент. Спасибо.
Жека (09.12.2023 в 18:33):
ManHunter, вы меня наверное не так поняли. Хотелось, просто увидеть от вас уже статьи - про более серьёзные защиты и как вы с этим справляетесь, вот и всё.
ManHunter (09.12.2023 в 02:15):
Рекомендую почитать Правила сайта.
Жека (08.12.2023 в 23:26):
ManHunter, здравствуйте. Года два назад, крякал EaseUS Data Recovery Wizard. Мозг попортила прилично, прога получилась зарегана как Про, только при сохранении не один файл не сохранялся. Думал, ещё чего не пропатчил, но нет - просто та сволочь, проверяет целостность файла или кода, так и не понял. Помогло только создание лоадера и всё стала сохранять в любых объёмах и без ограничений. Было бы здорово, если бы вы со своим опытом, докопались до истины и нашли где они проверяют целостность и в каком месте, спасибо.
pawel97 (19.11.2023 в 01:30):
У этой конторы строка standard edition сидит и правится на professional где-то в ресурсах, после чего код можно не патчить.
p.s. Для лазаруса бы такой idr...
ManHunter (12.11.2023 в 08:42):
А фаерволы для чего придуманы? То, что изначально не заточено для работы с интернетом, там вообще появляться не должно. И без разницы, платное или бесплатное.
Илья (12.11.2023 в 01:18):
Приятная программа, чувствуется немецкое качество и чёткость.

Скорее всего вы не выпускали программу в интернет. Если выпустить, то будет ещё одна проблема - появляется не пропадающее окно, в котором просят ввести ClientID. Я решил проблему просто: испортил все адреса (4 шт.), содержащие www.ascomp.de/api от греха подальше.
Noobie (11.11.2023 в 16:36):
Весьма признателен за помощь, все скачал, нашел искомое место, буду разбираться.
ManHunter (11.11.2023 в 13:50):
Noobie, вот целая коллекция подобных софтин: https://www.manhunter.ru/under..._faylah.html
Но они вряд ли помогут, если навскидку ничего из очевидного не найдено, значит автор все-таки заморочился на каком-то кастомном решении. А тут может быть что угодно.
Noobie (11.11.2023 в 09:27):
Напомните мне, пожалуйста, название утилиты, которая позволяет определить всякого рода крипту и прочие заморочки в PE файлах. Точно была на компе, но начисто забыл имя, поиски дали только x3chun's Crypto Searcher [For Public Version], но вроде это не та. Гугление тоже не помогло. Если таковой в хозяйстве нет, то каким образом в дебаггере определить где сидит проверка чексуммы экзешника? Симптомы такие: если  патчить хотя бы один байт, софт внешне никак не реагирует, но перестает работать как положено. Разумеется, лодырь помогает, но хотелось бы докопаться до сути :-)

P.S. Правка в PE заголовке не помогает, проверка более хитрая.
Илья (09.11.2023 в 17:18):
Спасибо за ответ. Так и не смог найти ничего подобного в оригинальном файле. Сделал лоадер (благодаря вашей статье про патчеры и лоадеры), где пропатчил все переходы в памяти, связанные с триалом. Цель достигнута.
Подозреваю, что игра была всё-таки частично упакована. Т.к. вылет происходит на том адресе, которого изначально нет, и который появляется уже при запуске программы (например в отладчике). Если интересно - игра MaxGammon v1.05.
ManHunter (08.11.2023 в 21:20):
Проверка по сертификату WinVerifyTrust или MsiGetFileSignatureInformation, через MapFileAndCheckSum, через штатную криптографию, про кастомные подсчеты вообще можно сколько угодно говорить.

Реакцию тоже можно накрутить как угодно, например, пара переходов с использованием контрольной суммы в качестве целевого адреса. В нетронутом файле все идет куда надо, в патченном гарантированно перейдет не туда.
Илья (08.11.2023 в 21:00):
А какие ещё бывают проверки целостности?

Симптомы: после пропатчинга хоть одного байта в любом месте программа загружается, но в течении 20 секунд (время может варьироваться) вылетает по исключению (обращение в недопустимую область памяти)

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0035 сек.) / Память: 4.5 Mb
Наверх