Исследование защиты программы Secure Eraser
Скриншот программы Secure Eraser
Программа Secure Eraser от компании ASCOMP предназначена для качественного и безопасного удаления информации с компьютера. Это могут быть временные файлы, данные браузеров, ненужные системные файлы, а также определенные пользователем данные и даже целые жесткие диски. Удаление выполняется с помощью многократной перезаписи информации по промышленным алгоритмам и военным стандартам. Программа вроде как бесплатна для личного использования, но вот "информационные окна" (по терминологии авторов) реально напрягают.
Забираем с офсайта дистрибутив последней версии, устанавливаем, смотрим. Для бесплатного использования требуется раскрыть свою почту и имя. Да ну нафиг, перебьются.
Триальное окно
На главном окне программы видны первичные признаки триальности: надпись о бесплатном использовании, ссылка на заказ полной версии, кастомная псевдо-форма регистрации. Пока достаточно. Основной исполняемый файл ничем не упакован и по всем признакам он написан на Дельфи, так что для анализа будем использовать декомпилятор IDR. Если предположить, что все отсылки к регистрации после покупки должны пропадать или наоборот, при бесплатном режиме должны отрисовываться, надо проанализировать главное окно программы и найти названия этих текстовых меток.
Ссылка на покупку
Как видно, ссылка на покупку имеет название "LabelPLUS". Значит теперь надо найти в декомпилированном листинге какие-либо манипуляции с этой меткой. Проще всего это сделать, сохранив проект и затем выполнив глобальный поиск по всем получившимся исходникам.
Сохраняем проект
Поиск строки в файлах проекта выводит нас на здоровенный файл "_Unit140.pas", в котором есть такие строки:
Code (Assembler) : Убрать нумерацию
- 0084D0FD lea edx,[ebp-9C]
- 0084D103 call LowerCase
- 0084D108 mov eax,dword ptr [ebp-9C]
- 0084D10E mov edx,84D898;'professional edition'
- ; Сравнить строки
- 0084D113 call @UStrEqual
- 0084D118 jne 0084D140
- ; Установить флаг регистрации
- 0084D11A mov dword ptr [ebx+0A0C],1;TFormMain.ProgramMode:Integer
- ; Скрыть триальные строки в интерфейсе
- 0084D124 mov eax,dword ptr [ebx+5EC];TFormMain.LabelPLUS:TLabel
- 0084D12A xor edx,edx
- 0084D12C call TControl.SetVisible
- 0084D131 mov eax,dword ptr [ebx+544];TFormMain.LabelPrivate:TLabel
- 0084D137 xor edx,edx
- 0084D139 call TControl.SetVisible
- 0084D13E jmp 0084D173
- ; Сбросить флаг регистрации
- 0084D140 xor eax,eax
- 0084D142 mov dword ptr [ebx+0A0C],eax;TFormMain.ProgramMode:Integer
- ; Отобразить триальные строки в интерфейсе
- 0084D148 mov edx,dword ptr [ebx+0A94];TFormMain.LangStrings::1
- 0084D14E mov eax,dword ptr [ebx+5EC];TFormMain.LabelPLUS:TLabel
- 0084D154 call TControl.SetText
- 0084D159 mov eax,dword ptr [ebx+5EC];TFormMain.LabelPLUS:TLabel
- 0084D15F mov dl,1
- 0084D161 call TControl.SetVisible
- 0084D166 mov eax,dword ptr [ebx+544];TFormMain.LabelPrivate:TLabel
- 0084D16C mov dl,1
Сообщение о поврежденном файле
Запускаем программу и получаем сообщение о поврежденном файле. Вариантов проверки целостности может быть сколько угодно, все зависит от фантазии авторов. До углубления в дебри кода я для начала попробую подкорректировать контрольную сумму в заголовке PE-файла.
Корректировка контрольной суммы
Сделать это также можно разными способами, я воспользуюсь PEiD с плагином FixCRC.
Программа успешно "зарегистрирована"
Запускаем программу, все работает. Никаких сообщений о битом файле, никаких окон при запуске и генерации отчета, никаких посторонних надписей в главном окне. Цель достигнута.
Просмотров: 856 | Комментариев: 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...
p.s. Для лазаруса бы такой idr...
ManHunter
(12.11.2023 в 08:42):
А фаерволы для чего придуманы? То, что изначально не заточено для работы с интернетом, там вообще появляться не должно. И без разницы, платное или бесплатное.
Илья
(12.11.2023 в 01:18):
Приятная программа, чувствуется немецкое качество и чёткость.
Скорее всего вы не выпускали программу в интернет. Если выпустить, то будет ещё одна проблема - появляется не пропадающее окно, в котором просят ввести ClientID. Я решил проблему просто: испортил все адреса (4 шт.), содержащие www.ascomp.de/api от греха подальше.
Скорее всего вы не выпускали программу в интернет. Если выпустить, то будет ещё одна проблема - появляется не пропадающее окно, в котором просят ввести 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 заголовке не помогает, проверка более хитрая.
P.S. Правка в PE заголовке не помогает, проверка более хитрая.
Илья
(09.11.2023 в 17:18):
Спасибо за ответ. Так и не смог найти ничего подобного в оригинальном файле. Сделал лоадер (благодаря вашей статье про патчеры и лоадеры), где пропатчил все переходы в памяти, связанные с триалом. Цель достигнута.
Подозреваю, что игра была всё-таки частично упакована. Т.к. вылет происходит на том адресе, которого изначально нет, и который появляется уже при запуске программы (например в отладчике). Если интересно - игра MaxGammon v1.05.
Подозреваю, что игра была всё-таки частично упакована. Т.к. вылет происходит на том адресе, которого изначально нет, и который появляется уже при запуске программы (например в отладчике). Если интересно - игра MaxGammon v1.05.
ManHunter
(08.11.2023 в 21:20):
Проверка по сертификату WinVerifyTrust или MsiGetFileSignatureInformation, через MapFileAndCheckSum, через штатную криптографию, про кастомные подсчеты вообще можно сколько угодно говорить.
Реакцию тоже можно накрутить как угодно, например, пара переходов с использованием контрольной суммы в качестве целевого адреса. В нетронутом файле все идет куда надо, в патченном гарантированно перейдет не туда.
Реакцию тоже можно накрутить как угодно, например, пара переходов с использованием контрольной суммы в качестве целевого адреса. В нетронутом файле все идет куда надо, в патченном гарантированно перейдет не туда.
Илья
(08.11.2023 в 21:00):
А какие ещё бывают проверки целостности?
Симптомы: после пропатчинга хоть одного байта в любом месте программа загружается, но в течении 20 секунд (время может варьироваться) вылетает по исключению (обращение в недопустимую область памяти)
Симптомы: после пропатчинга хоть одного байта в любом месте программа загружается, но в течении 20 секунд (время может варьироваться) вылетает по исключению (обращение в недопустимую область памяти)
Добавить комментарий
Заполните форму для добавления комментария